VariableDispenser.LockForWrite(String) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將變數加入至要鎖定供讀/寫存取的變數清單。
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 。