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 を使用しています。
Add() メソッドは、API ユーザーによって呼び出されます。上記の例では、void work() メソッド内で例外をキャッチし、そこにログを記録しています。
しかし、その代わりに、例外をキャッチしてユーザーに再スローしたいと考えています。while ループ内で実行される永久スレッドである Sametime は、キュー内の次のタスクに進むことによって、例外から回復する必要があります。私の短い質問は - void work() 内で発生する例外をどのようにスローするのですか?それでも、キュー内の次のタスクのために消費者は生き続けます。