8
Próbuję zaimplementować AutoResetEvent
. W tym celu używam bardzo prostej klasy:Synchronizowanie dwóch wątków za pomocą AutoResetEvent
public class MyThreadTest
{
static readonly AutoResetEvent thread1Step = new AutoResetEvent(false);
static readonly AutoResetEvent thread2Step = new AutoResetEvent(false);
void DisplayThread1()
{
while (true)
{
Console.WriteLine("Display Thread 1");
Thread.Sleep(1000);
thread1Step.Set();
thread2Step.WaitOne();
}
}
void DisplayThread2()
{
while (true)
{
Console.WriteLine("Display Thread 2");
Thread.Sleep(1000);
thread2Step.Set();
thread1Step.WaitOne();
}
}
void CreateThreads()
{
// construct two threads for our demonstration;
Thread thread1 = new Thread(new ThreadStart(DisplayThread1));
Thread thread2 = new Thread(new ThreadStart(DisplayThread2));
// start them
thread1.Start();
thread2.Start();
}
public static void Main()
{
MyThreadTest StartMultiThreads = new MyThreadTest();
StartMultiThreads.CreateThreads();
}
}
Ale to nie działa. Takie użycie wydaje się bardzo proste, więc doceniłbym, gdyby ktoś mógł mi pokazać, co jest nie tak i gdzie jest problem z logiką, którą tu implementuję.
Jak to jest, nie pracujący? Co się dzieje? – SLaks
Kod, który podałeś, nie będzie się nawet kompilował - nigdy nie zadeklarowałeś '_stopThreads' ... –
@ Jon Skeet. Po prostu zmienię kod, aby wyizolować problem, teraz jest on naprawiony. – Leron