防止IIS在任务结束前终止它 - 第2部分

时间:2014-02-05 16:44:47

标签: multithreading iis azure threadpool

这是

的延续

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的博客文章,如果你能回答的话,你也会这样做:)

0 个答案:

没有答案