1

我的 ASP.NET MVC 4 Web 应用程序中有以下代码:

全球.asax.cs

protected void Application_Start()
{
    Task.Factory.StartNew(
        () =>
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                Thread.Sleep(100);
                Trace.WriteLine("Working");
            }
        },
        cancellationToken,
        TaskCreationOptions.LongRunningTask,
        TaskScheduler.Current);
}

似乎该任务在应用程序初始化时开始运行,运行了一段时间,但随后停止了。只要 AppDomain 正在运行,我就想继续运行。是什么导致它停止,我能做些什么来阻止它停止?

4

2 回答 2

0

从您获得的代码中,您的 cancelToken 似乎为 null,并且您的代码行上有 NullRefernceException:

 while (!cancellationToken.IsCancellationRequested)

你能在日志中看到这样的异常吗?

于 2013-06-10T08:34:42.180 回答
0

事实证明,根本问题是 Glimpse TraceInspector,这是这个问题的副作用。

因为这导致抛出异常,所以任务被停止。

我仍然无法完全解释细节,但将其添加到我的 Web.config 解决了问题:

  <glimpse>
    <inspectors>
      <ignoredTypes>
        <add type="Glimpse.Core.Inspector.TraceInspector, Glimpse.Core"/>
      </ignoredTypes>
    </inspectors>
  </glimpse>
于 2013-06-10T15:26:11.553 回答