Variables.Unlock Метод

Определение

Снимает блокировки с коллекции переменных и отмечает состояние коллекции переменных как недопустимое или неизвестное.

public:
 void Unlock();
public void Unlock ();
member this.Unlock : unit -> unit
Public Sub Unlock ()

Примеры

Следующий пример кода блокирует коллекцию переменных при GetVariables вызове. Затем в примере проверяется, заблокирована ли коллекция, и, если да, вызывается Unlock.

using System;  
using System.Collections.Generic;  
using System.Text;  
using Microsoft.SqlServer.Dts.Runtime;  

namespace Microsoft.SqlServer.SSIS.Sample  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            Package pkg = new Package();  
            Variables vars = null;  
            VariableDispenser variableDispenser = pkg.VariableDispenser;  
            variableDispenser.LockForRead("System::PackageName");  
            variableDispenser.LockForRead("System::OfflineMode");  
            variableDispenser.LockForWrite("System::InteractiveMode");  
            variableDispenser.GetVariables(ref vars);             
            // Determine whether the variable collection is locked before unlocking.  
            Boolean isLocked = vars.Locked;  

            // Verify the value of vars.Locked. If the lock failed,  
            // call Reset.  
            if (isLocked)  
            {  
                vars.Unlock();  
            }  
            else  
            {  
                variableDispenser.Reset();  
            }  
        }  
    }  
}  
Imports System  
Imports System.Collections.Generic  
Imports System.Text  
Imports Microsoft.SqlServer.Dts.Runtime  

Namespace Microsoft.SqlServer.SSIS.Sample  
    Class Program  
        Shared  Sub Main(ByVal args() As String)  
            Dim pkg As Package =  New Package()   
            Dim vars As Variables =  Nothing   
            Dim variableDispenser As VariableDispenser =  pkg.VariableDispenser   
            variableDispenser.LockForRead("System::PackageName")  
            variableDispenser.LockForRead("System::OfflineMode")  
            variableDispenser.LockForWrite("System::InteractiveMode")  
            variableDispenser.GetVariables( vars)  
            ' Determine whether the variable collection is locked before unlocking.  
            Dim isLocked As Boolean =  vars.Locked   

            ' Verify the value of vars.Locked. If the lock failed,  
            ' call Reset.  
            If isLocked = True Then  
                vars.Unlock()  
            Else   
                variableDispenser.Reset()  
            End If  
        End Sub  
    End Class  
End Namespace  

Комментарии

Этот метод используется для разблокировки переменных, заблокированных с помощью VariableDispenser класса. При VariableDispenser освобождении коллекции переменных он отслеживает коллекцию в списке. Когда задача, вызываемая диспенсером переменной, завершает выполнение, все разблокированные коллекции автоматически разблокируются. Таким образом, если автоматическая разблокировка подходит для ваших целей, и если автоматическое разблокирование произошло после завершения задачи, вам не нужно вызывать Unlock метод. Однако иногда желательно как можно скорее разблокировать переменные по соображениям производительности. Явный вызов этого Unlock метода разблокирует переменные.

Свойство Locked возвращает значение, указывающее false , что разблокированная коллекция уже разблокирована. Значение true указывает, что коллекция переменных по-прежнему заблокирована. Вызов Unlock дважды вызывает ошибку, поэтому в некоторых ситуациях может потребоваться проверить значение этого свойства, прежде чем принимать решение о вызове Unlock.

Применяется к