Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ruft einen Wert ab, der angibt, ob der aktuelle Thread die Schreibsperre enthält.
Namespace: System.Threading
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public ReadOnly Property IsWriterLockHeld As Boolean
'Usage
Dim instance As ReaderWriterLock
Dim value As Boolean
value = instance.IsWriterLockHeld
public bool IsWriterLockHeld { get; }
public:
property bool IsWriterLockHeld {
bool get ();
}
/** @property */
public boolean get_IsWriterLockHeld ()
public function get IsWriterLockHeld () : boolean
Eigenschaftenwert
true, wenn der aktuelle Thread die Schreibsperre enthält, andernfalls false.
Beispiel
Das folgende Codebeispiel veranschaulicht, dass ReaderWriterLock bei dem Versuch, eine Lesesperre für einen Thread mit Schreibsperre zu erhalten, keine Lesesperre erteilt, sondern stattdessen die Sperrenanzahl für die Schreibsperre inkrementiert.
Imports System
Imports System.Threading
Public Class LockHeld
<MTAThread> _
Shared Sub Main()
Dim rwLock As New ReaderWriterLock()
rwLock.AcquireWriterLock(Timeout.Infinite)
rwLock.AcquireReaderLock(Timeout.Infinite)
If rwLock.IsReaderLockHeld Then
Console.WriteLine("Reader lock held.")
rwLock.ReleaseReaderLock()
Else If rwLock.IsWriterLockHeld Then
Console.WriteLine("Writer lock held.")
rwLock.ReleaseWriterLock()
Else
Console.WriteLine("No locks held.")
End If
If rwLock.IsReaderLockHeld Then
Console.WriteLine("Reader lock held.")
rwLock.ReleaseReaderLock()
Else If rwLock.IsWriterLockHeld Then
Console.WriteLine("Writer lock held.")
rwLock.ReleaseWriterLock()
Else
Console.WriteLine("No locks held.")
End If
End Sub
End Class
using System;
using System.Threading;
class LockHeld
{
static void Main()
{
ReaderWriterLock rwLock = new ReaderWriterLock();
rwLock.AcquireWriterLock(Timeout.Infinite);
rwLock.AcquireReaderLock(Timeout.Infinite);
if(rwLock.IsReaderLockHeld)
{
Console.WriteLine("Reader lock held.");
rwLock.ReleaseReaderLock();
}
else if(rwLock.IsWriterLockHeld)
{
Console.WriteLine("Writer lock held.");
rwLock.ReleaseWriterLock();
}
else
{
Console.WriteLine("No locks held.");
}
if(rwLock.IsReaderLockHeld)
{
Console.WriteLine("Reader lock held.");
rwLock.ReleaseReaderLock();
}
else if(rwLock.IsWriterLockHeld)
{
Console.WriteLine("Writer lock held.");
rwLock.ReleaseWriterLock();
}
else
{
Console.WriteLine("No locks held.");
}
}
}
using namespace System;
using namespace System::Threading;
int main()
{
ReaderWriterLock^ rwLock = gcnew ReaderWriterLock;
rwLock->AcquireWriterLock( Timeout::Infinite );
rwLock->AcquireReaderLock( Timeout::Infinite );
if ( rwLock->IsReaderLockHeld )
{
Console::WriteLine( "Reader lock held." );
rwLock->ReleaseReaderLock();
}
else
if ( rwLock->IsWriterLockHeld )
{
Console::WriteLine( "Writer lock held." );
rwLock->ReleaseWriterLock();
}
else
{
Console::WriteLine( "No locks held." );
}
if ( rwLock->IsReaderLockHeld )
{
Console::WriteLine( "Reader lock held." );
rwLock->ReleaseReaderLock();
}
else
if ( rwLock->IsWriterLockHeld )
{
Console::WriteLine( "Writer lock held." );
rwLock->ReleaseWriterLock();
}
else
{
Console::WriteLine( "No locks held." );
}
}
import System.*;
import System.Threading.*;
class LockHeld
{
public static void main(String[] args)
{
ReaderWriterLock rwLock = new ReaderWriterLock();
rwLock.AcquireWriterLock(Timeout.Infinite);
rwLock.AcquireReaderLock(Timeout.Infinite);
if (rwLock.get_IsReaderLockHeld()) {
Console.WriteLine("Reader lock held.");
rwLock.ReleaseReaderLock();
}
else {
if (rwLock.get_IsWriterLockHeld()) {
Console.WriteLine("Writer lock held.");
rwLock.ReleaseWriterLock();
}
else {
Console.WriteLine("No locks held.");
}
}
if (rwLock.get_IsReaderLockHeld()) {
Console.WriteLine("Reader lock held.");
rwLock.ReleaseReaderLock();
}
else {
if (rwLock.get_IsWriterLockHeld()) {
Console.WriteLine("Writer lock held.");
rwLock.ReleaseWriterLock();
}
else {
Console.WriteLine("No locks held.");
}
}
} //main
} //LockHeld
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
ReaderWriterLock-Klasse
ReaderWriterLock-Member
System.Threading-Namespace