VariableDispenser.LockForWrite(String) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.