AutoResetEvent-Konstruktor
Initialisiert eine neue Instanz der AutoResetEvent-Klasse mit einem booleschen Wert, der angibt, ob der anfängliche Zustand auf signalisiert festgelegt werden soll.
Namespace: System.Threading
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Sub New ( _
initialState As Boolean _
)
'Usage
Dim initialState As Boolean
Dim instance As New AutoResetEvent(initialState)
public AutoResetEvent (
bool initialState
)
public:
AutoResetEvent (
bool initialState
)
public AutoResetEvent (
boolean initialState
)
public function AutoResetEvent (
initialState : boolean
)
Parameter
- initialState
true, wenn der anfängliche Zustand auf signalisiert festgelegt werden soll. false, wenn der anfängliche Zustand auf nicht signalisiert festgelegt werden soll.
Beispiel
Imports System
Imports System.Threading
Namespace AutoResetEvent_Examples
Class MyMainClass
'Initially not signaled.
Private Const numIterations As Integer = 100
Private Shared myResetEvent As New AutoResetEvent(False)
Private Shared number As Integer
<MTAThread> _
Shared Sub Main()
'Create and start the reader thread.
Dim myReaderThread As New Thread(AddressOf MyReadThreadProc)
myReaderThread.Name = "ReaderThread"
myReaderThread.Start()
Dim i As Integer
For i = 1 To numIterations
Console.WriteLine("Writer thread writing value: {0}", i)
number = i
'Signal that a value has been written.
myResetEvent.Set()
'Give the Reader thread an opportunity to act.
Thread.Sleep(0)
Next i
'Terminate the reader thread.
myReaderThread.Abort()
End Sub 'Main
Shared Sub MyReadThreadProc()
While True
'The value will not be read until the writer has written
' at least once since the last read.
myResetEvent.WaitOne()
Console.WriteLine("{0} reading value: {1}", Thread.CurrentThread.Name, number)
End While
End Sub 'MyReadThreadProc
End Class 'MyMainClass
End Namespace 'AutoResetEvent_Examples
using System;
using System.Threading;
namespace AutoResetEvent_Examples
{
class MyMainClass
{
//Initially not signaled.
const int numIterations = 100;
static AutoResetEvent myResetEvent = new AutoResetEvent(false);
static int number;
static void Main()
{
//Create and start the reader thread.
Thread myReaderThread = new Thread(new ThreadStart(MyReadThreadProc));
myReaderThread.Name = "ReaderThread";
myReaderThread.Start();
for(int i = 1; i <= numIterations; i++)
{
Console.WriteLine("Writer thread writing value: {0}", i);
number = i;
//Signal that a value has been written.
myResetEvent.Set();
//Give the Reader thread an opportunity to act.
Thread.Sleep(0);
}
//Terminate the reader thread.
myReaderThread.Abort();
}
static void MyReadThreadProc()
{
while(true)
{
//The value will not be read until the writer has written
// at least once since the last read.
myResetEvent.WaitOne();
Console.WriteLine("{0} reading value: {1}", Thread.CurrentThread.Name, number);
}
}
}
}
using namespace System;
using namespace System::Threading;
ref class MyMainClass
{
public:
static void MyReadThreadProc()
{
while ( true )
{
//The value will not be read until the writer has written
// at least once since the last read.
myResetEvent->WaitOne();
Console::WriteLine( " {0} reading value: {1}", Thread::CurrentThread->Name, number );
}
}
//Initially not signaled.
static AutoResetEvent^ myResetEvent = gcnew AutoResetEvent( false );
static int number;
literal int numIterations = 100;
};
int main()
{
//Create and start the reader thread.
Thread^ myReaderThread = gcnew Thread( gcnew ThreadStart( MyMainClass::MyReadThreadProc ) );
myReaderThread->Name = "ReaderThread";
myReaderThread->Start();
for ( int i = 1; i <= MyMainClass::numIterations; i++ )
{
Console::WriteLine( "Writer thread writing value: {0}", i );
MyMainClass::number = i;
//Signal that a value has been written.
MyMainClass::myResetEvent->Set();
//Give the Reader thread an opportunity to act.
Thread::Sleep( 0 );
}
//Terminate the reader thread.
myReaderThread->Abort();
}
package AutoResetEvent_Examples;
import System.*;
import System.Threading.*;
import System.Threading.Thread;
class MyMainClass
{
//Initially not signaled.
private final static int numIterations = 100;
private static AutoResetEvent myResetEvent = new AutoResetEvent(false);
private static int number;
public static void main(String[] args)
{
//Create and start the reader thread.
Thread myReaderThread = new Thread(new ThreadStart(MyReadThreadProc));
myReaderThread.set_Name("ReaderThread");
myReaderThread.Start();
for (int i = 1; i <= numIterations; i++) {
Console.WriteLine("Writer thread writing value: {0}",
String.valueOf(i));
number = i;
//Signal that a value has been written.
myResetEvent.Set();
//Give the Reader thread an opportunity to act.
Thread.Sleep(0);
}
//Terminate the reader thread.
myReaderThread.Abort();
} //main
static void MyReadThreadProc()
{
while (true) {
//The value will not be read until the writer has written
// at least once since the last read.
myResetEvent.WaitOne();
Console.WriteLine("{0} reading value: {1}",
Thread.get_CurrentThread().get_Name(),String.valueOf(number));
}
} //MyReadThreadProc
} //MyMainClass
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, 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
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
AutoResetEvent-Klasse
AutoResetEvent-Member
System.Threading-Namespace
WaitHandle