ReaderWriterLock.AcquireWriterLock Metódus

Definíció

Beolvasja az író zárolását.

Túlterhelések

Name Description
AcquireWriterLock(Int32)

Beolvasja az író zárolását az időtúllépés értékével Int32 .

AcquireWriterLock(TimeSpan)

Beolvasja az író zárolását az időtúllépés értékével TimeSpan .

AcquireWriterLock(Int32)

Forrás:
ReaderWriterLock.cs
Forrás:
ReaderWriterLock.cs
Forrás:
ReaderWriterLock.cs
Forrás:
ReaderWriterLock.cs
Forrás:
ReaderWriterLock.cs

Beolvasja az író zárolását az időtúllépés értékével Int32 .

public:
 void AcquireWriterLock(int millisecondsTimeout);
public void AcquireWriterLock(int millisecondsTimeout);
member this.AcquireWriterLock : int -> unit
Public Sub AcquireWriterLock (millisecondsTimeout As Integer)

Paraméterek

millisecondsTimeout
Int32

Az időtúllépés ezredmásodpercben.

Kivételek

millisecondsTimeout a zárolási kérelem megadása előtt lejár.

Példák

Az alábbi példakód bemutatja, hogyan szerezhet be és oldhat fel írózárat, és hogyan kezelheti a kérések túllépésekor kidobott kivételeket.

Ez a kód egy nagyobb, az ReaderWriterLock osztályhoz tartozó példa része.

// The complete code is located in the ReaderWriterLock class topic.
using System;
using System.Threading;

public class Example
{
   static ReaderWriterLock rwl = new ReaderWriterLock();
   // Define the shared resource protected by the ReaderWriterLock.
   static int resource = 0;
' The complete code is located in the ReaderWriterLock class topic.
Imports System.Threading

Public Module Example
   Private rwl As New ReaderWriterLock()
   ' Define the shared resource protected by the ReaderWriterLock.
   Private resource As Integer = 0
// Request and release the writer lock, and handle time-outs.
static void WriteToResource(Random rnd, int timeOut)
{
   try {
      rwl.AcquireWriterLock(timeOut);
      try {
         // It's safe for this thread to access from the shared resource.
         resource = rnd.Next(500);
         Display("writes resource value " + resource);
         Interlocked.Increment(ref writes);
      }
      finally {
         // Ensure that the lock is released.
         rwl.ReleaseWriterLock();
      }
   }
   catch (ApplicationException) {
      // The writer lock request timed out.
      Interlocked.Increment(ref writerTimeouts);
   }
}
' Request and release the writer lock, and handle time-outs.
Sub WriteToResource(rnd As Random, timeOut As Integer)
   Try
      rwl.AcquireWriterLock(timeOut)
      Try
         ' It's safe for this thread to read or write from the shared resource.
         resource = rnd.Next(500)
         Display("writes resource value " & resource)
         Interlocked.Increment(writes)
      Finally
         ' Ensure that the lock is released.
         rwl.ReleaseWriterLock()
      End Try
   Catch ex As ApplicationException
      ' The writer lock request timed out.
      Interlocked.Increment(writerTimeouts)
   End Try
End Sub
}
End Module

Megjegyzések

Ez a módszer letiltja, ha egy másik szál olvasózárral vagy írózárral rendelkezik. Az író több egyidejű olvasózárolással történő alternatív zárolásának leírását az ReaderWriterLock osztályban tekintheti meg.

A már olvasózárral rendelkező szálak kétféleképpen szerezhetik be az írózárat: az olvasó zárolásának feloldásával hívás előtt AcquireWriterLockvagy hívással UpgradeToWriterLock.

Figyelmeztetés

Ha egy szál még mindig olvasózárral rendelkezik AcquireWriterLock , akkor letiltja a saját olvasózárát; ha végtelen időtúllépés van megadva, a szál holtpontra kerül. Az ilyen holtpontok elkerülése érdekében határozza IsReaderLockHeld meg, hogy az aktuális szál rendelkezik-e már olvasózárral.

AcquireWriterLock támogatja a rekurzív írózárolási kéréseket. Ez azt jelzi, hogy egy szál többször is meghívható AcquireWriterLock , ami minden alkalommal növeli a zárolások számát. Minden híváshoz egyszer kell hívnia ReleaseWriterLockAcquireWriterLock. Másik lehetőségként meghívhatja ReleaseLock a zárolások számának azonnali nullára való csökkentésére.

A rekurzív zárolási kérések mindig azonnal meg lesznek adva, anélkül, hogy a kérési szálat az írósorba helyeznák.

Az érvényes időtúllépési értékekért lásd: ReaderWriterLock.

Lásd még

A következőre érvényes:

AcquireWriterLock(TimeSpan)

Forrás:
ReaderWriterLock.cs
Forrás:
ReaderWriterLock.cs
Forrás:
ReaderWriterLock.cs
Forrás:
ReaderWriterLock.cs
Forrás:
ReaderWriterLock.cs

Beolvasja az író zárolását az időtúllépés értékével TimeSpan .

public:
 void AcquireWriterLock(TimeSpan timeout);
public void AcquireWriterLock(TimeSpan timeout);
member this.AcquireWriterLock : TimeSpan -> unit
Public Sub AcquireWriterLock (timeout As TimeSpan)

Paraméterek

timeout
TimeSpan

Az TimeSpan időtúllépési időszak megadása.

Kivételek

timeout a zárolási kérelem megadása előtt lejár.

timeout a -1 ezredmásodpercen kívüli negatív értéket ad meg.

Megjegyzések

Ez a módszer letiltja, ha egy másik szál olvasózárral vagy írózárral rendelkezik. Az író több egyidejű olvasózárolással történő alternatív zárolásának leírását az ReaderWriterLock osztályban tekintheti meg.

A már olvasózárral rendelkező szálak kétféleképpen szerezhetik be az írózárat: az olvasó zárolásának feloldásával hívás előtt AcquireWriterLockvagy hívással UpgradeToWriterLock.

Figyelmeztetés

Ha egy szál még mindig olvasózárral rendelkezik AcquireWriterLock , akkor letiltja a saját olvasózárát; ha végtelen időtúllépés van megadva, a szál holtpontra kerül. Az ilyen holtpontok elkerülése érdekében határozza IsReaderLockHeld meg, hogy az aktuális szál rendelkezik-e már olvasózárral.

AcquireWriterLock támogatja a rekurzív írózárolási kéréseket. Ez azt jelzi, hogy egy szál többször is meghívható AcquireWriterLock , ami minden alkalommal növeli a zárolások számát. Minden híváshoz egyszer kell hívnia ReleaseWriterLockAcquireWriterLock. Másik lehetőségként meghívhatja ReleaseLock a zárolások számának azonnali nullára való csökkentésére.

A rekurzív zárolási kérések mindig azonnal meg lesznek adva, anélkül, hogy a kérési szálat az írósorba helyeznák.

Az érvényes időtúllépési értékekért lásd: ReaderWriterLock.

Lásd még

A következőre érvényes: