语言

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 锁定该列表中的变量。 在被呼叫之前GetVariables,可以对 和 LockForWrite 进行任意数量的呼叫LockForRead

注释

同一时间,只有一个客户端能对任意变量获得读写锁。 因此,如果只需要读取权限,最好使用 LockForRead 它来帮助避免变量访问冲突。

如果锁定成功,通过呼叫 Unlock来清除。

适用于