Friday, May 24, 2013

helper methods to get, set package variables during long running script

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