Set package variable in Script component without long locking
Set("User::number", GetInt("User::number") + 1); ... // Helper methods to be added to Script code private int GetInt(string varName) { Variables lockedVariables = null; int var; Dts.VariableDispenser.LockOneForRead(varName, ref lockedVariables); var = (int)lockedVariables[varName].Value; lockedVariables.Unlock(); return var; } private string GetStr(string varName) { Variables lockedVariables = null; string var; Dts.VariableDispenser.LockOneForRead(varName, ref lockedVariables); var = lockedVariables[varName].Value.ToString(); lockedVariables.Unlock(); return var; } private void Set(string varName, int value) { Variables lockedVariables = null; Dts.VariableDispenser.LockOneForWrite(varName, ref lockedVariables); lockedVariables[varName].Value = value; lockedVariables.Unlock(); } private void Set(string varName, string value) { Variables lockedVariables = null; Dts.VariableDispenser.LockOneForWrite(varName, ref lockedVariables); lockedVariables[varName].Value = value; lockedVariables.Unlock(); }
No comments:
Post a Comment