【发布时间】:2010-11-15 19:29:11
【问题描述】:
我想实现两个线程之间的如下通信:
Thread Alpha 做了一些事情,然后自己挂起。接下来,第二个线程(Beta)引发和恢复 Alpha 线程的事件。循环继续……
我做了类似下面的事情,但我不确定它是否是一个合适的设计。我还注意到 Thread.Suspend() 和 Thread.Resume() 已被弃用。我期待听到有关此实现的任何建议以及替换已弃用方法的首选方法。
namespace ThreadTester
{
delegate void ActionHandler();
class Alpha
{
internal Thread alphaThread;
internal void Start()
{
while (true)
{
this.alphaThread.Suspend();
Console.WriteLine("Alpha");
}
}
internal void Resume()
{
while (this.alphaThread.ThreadState == ThreadState.Suspended)
this.alphaThread.Resume();
}
}
class Beta
{
internal event ActionHandler OnEvent;
internal void Start()
{
for (int i = 0; i < 15; i++)
{
OnEvent();
Thread.Sleep(1000);
}
}
}
class Program
{
static void Main(string[] args)
{
Alpha alpha = new Alpha();
alpha.alphaThread = new Thread(new ThreadStart(alpha.Start));
alpha.alphaThread.Start();
while (!alpha.alphaThread.IsAlive) ;
Beta beta = new Beta();
beta.OnEvent += new ActionHandler(alpha.Resume);
Thread betaThread = new Thread(new ThreadStart(beta.Start));
betaThread.Start();
}
}
}
【问题讨论】:
标签: c# multithreading events