Verrouiller des variables dans une tâche de script à l’aide de C #

J’exécute un travail d’agent SQL Server comportant une tâche de script avec Microsoft Visual C # 2008, présentée ci-dessous:

public void Main() { ssortingng filepath; filepath = Dts.Variables["User::FolderPath"].Value.ToSsortingng(); Dts.Variables["User::FileExistsFlg"].Value = File.Exists(filepath); Dts.TaskResult = (int)ScriptResults.Success; } 

Je reçois cette erreur:

Exécuté en tant qu’utilisateur: PSFACAMDWHSQL1 \ SYSTEM.
Utilitaire d’exécution de package Microsoft (R) SQL Server
Version 10.50.4270.0 pour 64 bits
Copyright (C) Microsoft Corporation 2010. Tous droits réservés.
Commencé: 18:06:19
Erreur: 2015-02-27 18: 07: 44.95
Code: 0xC001404F
Source: For Loop Container
Description: cette collection de variables a déjà été déverrouillée. La méthode Unlock est appelée une seule fois dans une collection Variables dissortingbuée. End Error

DTExec: L’exécution du package a renvoyé DTSER_FAILURE (1).
Commencé: 18:06:19
Terminé: 18:07:45
Écoulé: 85,613 secondes.
L’exécution du package a échoué. L’étape a échoué.

Je ne sais pas comment déverrouiller la variable dans la tâche de script.

UPDATE: J’ai essayé cette méthode mais il me manque quelque chose sur le code:

  public void Main() { // Lock variables Dts.VariableDispenser.LockForRead("User::FolderPath"); Dts.VariableDispenser.LockForWrite("User::FileExistsFlg"); // Create a variables 'container' to store variables Variables vars = null; // Add variables from the VariableDispenser to the variables 'container' Dts.VariableDispenser.GetVariables(ref vars); ssortingng filepath; filepath = Dts.Variables["User::FolderPath"].Value.ToSsortingng(); Dts.Variables["User::FileExistsFlg"].Value = File.Exists(filepath); // Release the locks vars.Unlock(); Dts.TaskResult = (int)ScriptResults.Success; } } 

Essayez de convertir votre bool en int.

 Dts.Variables["User::FileExistsFlg"].Value = Convert.ToInt32(File.Exists(filepath));