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 を作成し、読み込みにロックされた2つのシステム変数と書き込み時にロックされた1つの変数を追加します。 その後、 GetVariables を呼び出してコレクション内の3つの変数すべてをロックし、リストは解放され新しい変数のために利用可能になります。
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が呼ばれます。
Note
任意の変数に対して同時に読み書きロックを取得できるクライアントは1つだけです。 したがって、読み取り権限のみが必要な場合は、変数アクセスの競合を避けるために LockForRead を使うのが最善です。
ロックが成功したら、 Unlockに電話して解除してください。