这是
的延续Prevent IIS from killing a Task before it ends
我的问题:
鉴于
public static Task StartNew(Action act)
{
IISNotifier notif = new IISNotifier(); -> HostingEnvironment.RegisterObject(this);
notif.Started();
return Task.Factory.StartNew(() => {
act.Invoke();
notif.Finished(); -> HostingEnvironment.UnregisterObject(this);
});
}
由
调用 return new LogResult(id, IISTaskFactory.StartNew(() =>
DoLogInAzure(account, id, exception, request))
);
示例实现
DoLogInAzure(account, id, exception, request)) {
DoSomeLongOperation()
**Thread.Yield()**
DoLogInAzure();
}
以上只是示例代码。为了说明Thread.Yield语句,我把它递归了。
问题 请记住,这是在Azure Web角色或可能是Azure网站中运行。 1.)在上面的例子中,Thread.Yield()语句在IIS的上下文中实际执行了什么操作? 1a。)我认为它将允许线程为其他传入请求提供服务 1b。)它是否允许IIS拆除线程,即递归会停止吗?
非常感谢,特别是对Gervasio Marchand,Damian Schenkelman以及Phil Haack的博客文章,如果你能回答的话,你也会这样做:)