Timeout Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Végtelen időtúllépési időközöket meghatározó állandókat tartalmaz. Ez az osztály nem örökölhető.
public ref class Timeout abstract sealed
public ref class Timeout sealed
public static class Timeout
public sealed class Timeout
[System.Runtime.InteropServices.ComVisible(true)]
public static class Timeout
type Timeout = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type Timeout = class
Public Class Timeout
Public NotInheritable Class Timeout
- Öröklődés
-
Timeout
- Attribútumok
Példák
Az alábbi példa azt mutatja be, hogy egy szál végtelen ideig fog aludni, majd felébred.
using System;
using System.Security.Permissions;
using System.Threading;
class ThreadInterrupt
{
static void Main()
{
StayAwake stayAwake = new StayAwake();
Thread newThread =
new Thread(new ThreadStart(stayAwake.ThreadMethod));
newThread.Start();
// The following line causes an exception to be thrown
// in ThreadMethod if newThread is currently blocked
// or becomes blocked in the future.
newThread.Interrupt();
Console.WriteLine("Main thread calls Interrupt on newThread.");
// Tell newThread to go to sleep.
stayAwake.SleepSwitch = true;
// Wait for newThread to end.
newThread.Join();
}
}
class StayAwake
{
bool sleepSwitch = false;
public bool SleepSwitch
{
set{ sleepSwitch = value; }
}
public StayAwake(){}
public void ThreadMethod()
{
Console.WriteLine("newThread is executing ThreadMethod.");
while(!sleepSwitch)
{
// Use SpinWait instead of Sleep to demonstrate the
// effect of calling Interrupt on a running thread.
Thread.SpinWait(10000000);
}
try
{
Console.WriteLine("newThread going to sleep.");
// When newThread goes to sleep, it is immediately
// woken up by a ThreadInterruptedException.
Thread.Sleep(Timeout.Infinite);
}
catch(ThreadInterruptedException e)
{
Console.WriteLine("newThread cannot go to sleep - " +
"interrupted by main thread.");
}
}
}
Option Explicit
Option Strict
Imports System.Security.Permissions
Imports System.Threading
Public Class ThreadInterrupt
<MTAThread> _
Shared Sub Main()
Dim stayAwake As New StayAwake()
Dim newThread As New Thread(AddressOf stayAwake.ThreadMethod)
newThread.Start()
' The following line causes an exception to be thrown
' in ThreadMethod if newThread is currently blocked
' or becomes blocked in the future.
newThread.Interrupt()
Console.WriteLine("Main thread calls Interrupt on newThread.")
' Tell newThread to go to sleep.
stayAwake.SleepSwitch = True
' Wait for newThread to end.
newThread.Join()
End Sub
End Class
Public Class StayAwake
Dim sleepSwitchValue As Boolean = False
WriteOnly Property SleepSwitch As Boolean
Set
sleepSwitchValue = Value
End Set
End Property
Sub New()
End Sub
Sub ThreadMethod()
Console.WriteLine("newThread is executing ThreadMethod.")
While Not sleepSwitchValue
' Use SpinWait instead of Sleep to demonstrate the
' effect of calling Interrupt on a running thread.
Thread.SpinWait(10000000)
End While
Try
Console.WriteLine("newThread going to sleep.")
' When newThread goes to sleep, it is immediately
' woken up by a ThreadInterruptedException.
Thread.Sleep(Timeout.Infinite)
Catch ex As ThreadInterruptedException
Console.WriteLine("newThread cannot go to " & _
"sleep - interrupted by main thread.")
End Try
End Sub
End Class
Megjegyzések
Az osztály tagjai végtelen időtúllépési időközök megadására szolgálnak a szálkezelési műveletekben.
Infinite olyan metódusok használják, amelyek egész szám millisecondsTimeout paramétert fogadnak el, például Thread.Sleep(Int32): , Thread.Join(Int32)és ReaderWriterLock.AcquireReaderLock(Int32).
InfiniteTimeSpanolyan metódusok használják, amelyek elfogadják az timeout olyan típusú TimeSpanparamétereket, mint például Thread.Sleep(TimeSpan)a . Thread.Join(TimeSpan)ReaderWriterLock.AcquireReaderLock(TimeSpan)
Mezők
| Name | Description |
|---|---|
| Infinite |
Egy végtelen várakozási időtartam megadására használt állandó a paramétert Int32 elfogadó szálmetódusokhoz. |
| InfiniteTimeSpan |
Egy paramétert elfogadó TimeSpan metódusok végtelen várakozási idejének megadására használt állandó. |
A következőre érvényes:
Szálbiztonság
Ez a típus szálbiztos.