我在这里开始一项任务:
System.Threading.Tasks.Task.Factory.StartNew( () =>
RefreshCache(crmClientInfo)).ContinueWith(
previous => RefreshCacheExceptionHandling(previous.Exception),
TaskContinuationOptions.OnlyOnFaulted
);
......这是我的工人:
public void RefreshCache(CrmClientInfo _crmClientInfo)
{
AsyncManager.OutstandingOperations.Increment();
Timer timer = new Timer(10000);
timer.Elapsed += delegate
{
throw new AggregateException("Timeout!");
};
timer.Start();
OtherServices.RefreshCache(crmClientInfo);
AsyncManager.OutstandingOperations.Decrement();
}
如果异常不在定时器定义中而在其他地方发生,则异常会正确地冒泡到RefreshCacheExceptionHandling()
。但是如果它从计时器(AgregateException("Timeout!");)
触发,则线程不会中断。的为什么吗
答案 0 :(得分:1)
System.Threading.Timer类在ThreadPool上进行回调 线程,根本不使用事件模型。
在这里查看文档:{{3}}