1
當我需要在X秒內完成任務並且如果未完成任務時,通常會出現這種情況,我想繼續操作,處理其餘的任務提供任務X的替代方案X完成時間量
我被默認爲是這樣的:
Thread worker = new Thread(() => {
// do some long operation
});
Thread monitor = new Thread(() => {
Thread.Sleep(10000);
if(worker != null && worker.IsAlive) {
worker.Abort();
worker = null;
}
StartNextTask();
});
monitor.Start();
worker.Start();
這工作,但它是麻煩,因爲它使用兩個線程(是的,你可以使用Task
類以及使用來自線程線程池)。
AutoResetEvent
s和event
基於模型不太有效,因爲前者阻塞監視器線程直到工作完成,並且event
驅動的方法依賴於客戶端調用事件並通知監視器。
是否存在可以遵循相同語義的替代模式?