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 を 2 度呼び出すとエラーが発生します。このため、状況によってはこのプロパティの値を調べてから、Unlock を呼び出すかどうかを決定してください。

適用対象