public class ProducerConsumerQueue
{
public void EnqueueTask(MyTask task)
{
}
void Work()
{
while (true)
{
try
{
// my task goes here
Thread.Sleep(2000);
}
catch(Exception ex)
{
Log(ex);
}
}
}
}
制片人:
public void Add()
{
MyTask task = new MyTask();
new ProducerConsumerQueue().EnqueueTask(task);
}
我在 .NET 3.5 中。
我的 API 用户将调用 Add() 方法。在上面的示例中,在方法 void work() 中,我正在捕获异常并在那里记录。
但不是那样,我想捕捉并重新向用户抛出异常。Sametime 是在 while 循环中运行的永久线程,应该通过继续执行队列中的下一个任务来从异常中恢复。我的简短问题是 - 我将如何抛出发生在 void work() 中的异常,但消费者仍然为队列中的下一个任务保持活动状态。