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 ,並將兩個系統變數加入至已鎖定讀取的清單,並將一個變數新增至已鎖定要寫入的清單。 然後, GetVariables 會呼叫來鎖定集合中的所有三個變數,並釋放清單並讓新變數使用。

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

注意

一次只有一個用戶端可以取得任何指定變數的讀取/寫入鎖定。 因此,如果只需要讀取權限,最好使用 LockForRead 來協助避免變數存取中的衝突。

如果鎖定成功,請藉由呼叫將它清除 Unlock

適用於