言語

VariableDispenser.LockForWrite(String) メソッド

定義

読み書きアクセスのためにロックされる変数のリストに変数を追加します。

public:
 void LockForWrite(System::String ^ variable);
public void LockForWrite(string variable);
member this.LockForWrite : string -> unit
Public Sub LockForWrite (variable As String)

パラメーター

variable
String

リストに追加する変数の名前は読み書きアクセスのためにロックされます。

以下のコード例では、 VariableDispenser を作成し、読み込みにロックされた2つのシステム変数と書き込み時にロックされた1つの変数を追加します。 その後、 GetVariables を呼び出してコレクション内の3つの変数すべてをロックし、リストは解放され新しい変数のために利用可能になります。

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("User:MyVariable");  
            variableDispenser.GetVariables(ref vars);             
            // Verify that the variable is locked before unlocking.  
            Console.WriteLine("Variables are locked? {0}", vars.Locked);  
            foreach (Variable myVar in vars)  
            {  
                Console.WriteLine("Name        {0}", myVar.Name);  
                Console.WriteLine("Description {0}", myVar.Description);  
                Console.WriteLine();  
            }  
            // Use Contains to determine whether indexing can be used.  
            Boolean pkgName = variableDispenser.Contains("PackageName");  
            String qName = variableDispenser.GetQualifiedName("PackageName");  
            Console.WriteLine("Contains is valid?       {0}", pkgName);  
            Console.WriteLine("Fully qualified name is: {0}", qName);  

            vars.Unlock();  

            Console.WriteLine("Variables are locked? {0}", vars.Locked);  
        }  
    }  
}  
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("User:MyVariable")  
            variableDispenser.GetVariables( vars)  
            ' Verify that the variable is locked before unlocking.  
            Console.WriteLine("Variables are locked? {0}", vars.Locked)  
            Dim myVar As Variable  
            For Each myVar In vars  
                Console.WriteLine("Name        {0}", myVar.Name)  
                Console.WriteLine("Description {0}", myVar.Description)  
                Console.WriteLine()  
            Next  
            ' Use Contains to determine whether indexing can be used.  
            Dim pkgName As Boolean =  variableDispenser.Contains("PackageName")   
            Dim qName As String =  variableDispenser.GetQualifiedName("PackageName")   
            Console.WriteLine("Contains is valid?       {0}", pkgName)  
            Console.WriteLine("Fully qualified name is: {0}", qName)  

            vars.Unlock()  

            Console.WriteLine("Variables are locked? {0}", vars.Locked)  
        End Sub  
    End Class  
End Namespace  

出力例:

Variables are locked? True

Name MyVariable

Description

Name OfflineMode

Description The offline mode currently set for the package

Name PackageName

Description The package name

Contains is valid? True

Fully qualified name is: System::PackageName

Variables are locked? False

注釈

このメソッドは最初の呼び出し時にリストを作成し、与えられた変数をリストに追加します。 その後の呼び出しでは、変数が既存リストに追加されます。 この方法は変数をロックするのではなく、単にリストを作成するだけです。 欲しい変数のリストを作成し終えたら、 GetVariables を呼び出してリスト内の変数をロックします。 LockForReadLockForWriteに何度も電話をかけてから、GetVariablesが呼ばれます。

Note

任意の変数に対して同時に読み書きロックを取得できるクライアントは1つだけです。 したがって、読み取り権限のみが必要な場合は、変数アクセスの競合を避けるために LockForRead を使うのが最善です。

ロックが成功したら、 Unlockに電話して解除してください。

適用対象