【发布时间】:2013-01-03 10:05:29
【问题描述】:
我刚刚开始学习 Task 的工作原理,并获得了一个有趣的案例。 我有 HttpTaskAsyncHandler 但如果我在 ProcessRequestAsync 中的代码调用某些任务,我将无法访问 HttpContext
public class MyAsyncHandler : HttpTaskAsyncHandler, IReadOnlySessionState
{
public override async Task ProcessRequestAsync(HttpContext context)
{
//can use HttpContext here
await MyJob("data");
//can use HttpContext here
}
public async Task MyJob(string data)
{
var func = Task.Factory.StartNew(() => Process(data));
await func;
}
public string Process(string context)
{
**//can't use HttpContext here**
Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
}
}
可以修复吗?我知道 Process 方法会在其他方面调用,但无论如何。 谢谢/
【问题讨论】:
-
你为什么要把工作推到线程池然后
awaiting呢?为什么不只在请求线程上完成工作?
标签: elmah asp.net-4.5 httptaskasynchandler