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 を呼び出して、この一覧にある変数をロックします。 LockForRead および LockForWrite に対する呼び出しは、GetVariables を呼び出す前に、何回でも行うことができます。

注意

一度に 1 つのクライアントだけが、任意の指定された変数に対する読み取り/書き込みロックを取得できます。 したがって、読み取り権限だけが必要な場合は、LockForRead を使用することをお勧めします。これは変数へのアクセスの競合回避に役立ちます。

ロックが成功している場合は、Unlock を呼び出してロックを解除します。

適用対象