我计划使用自动重置事件句柄进行线程间通信。
在消费者线程中,我需要每一分钟或当生产者调用Set方法时下载数据。
EventWaitHandle handle = new EventWaitHandle(false, EventResetMode.AutoReset);
我的生产者线程代码如下:
produceSomething();
handle.Set();
在消费者线程中,我需要每一分钟或当生产者调用Set方法时下载数据。
try
{
while(true)
{
handle.WaitOne(60000, false);
doSomething(); // Downloads data from Internet.
// Takes lot of time to complete it.
}
}
catch(ThreadAbortException)
{
cleanup();
}
我的问题是,如果消费者线程正在运行doSomething
函数,而生产者调用了set函数,那么自动复位事件对象的状态会是什么?
我的要求是,一旦生产者调用set方法,我就必须从互联网上下载最新的数据。如果doSomething
函数正在运行,当生产者调用set方法时,我必须中断它并再次调用。