Compartilhar via


VariableDispenser.LockForWrite(String) Método

Definição

Adiciona a variável à lista de variáveis a ser bloqueada para acesso de leitura e gravação.

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

Parâmetros

variable
String

O nome da variável a ser adicionada à lista a ser bloqueada para acesso de leitura e gravação.

Exemplos

O exemplo de código a seguir cria uma VariableDispenser e adiciona duas variáveis de sistema à lista que está bloqueada para leitura e uma variável à lista que está bloqueada para gravação. Em seguida, é GetVariables chamado para bloquear todas as três variáveis na coleção e as listas são liberadas e disponibilizadas para novas variáveis.

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  

Saída de exemplo:

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

Comentários

Esse método, em sua primeira chamada, cria uma lista e adiciona a variável fornecida à lista. Nas chamadas subsequentes, as variáveis são adicionadas à lista existente. Esse método não bloqueia as variáveis, apenas cria a lista. Quando terminar de criar uma lista das variáveis desejadas, chame GetVariables para bloquear as variáveis encontradas nesta lista. Qualquer número de chamadas para LockForRead e LockForWrite pode ser feita antes GetVariables de ser chamado.

Observação

Somente um cliente pode adquirir um bloqueio de leitura/gravação em qualquer variável determinada ao mesmo tempo. Portanto, se apenas a permissão de leitura for necessária, é melhor usar LockForRead para ajudar a evitar conflitos no acesso variável.

Se o bloqueio tiver sido bem-sucedido, desmarque-o chamando Unlock.

Aplica-se a