我刚开始学习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方法可以在其他方面调用,但无论如何。 感谢/
答案 0 :(得分:4)
你的任务中不存在HttpContent是正确的,因为它在一个单独的线程中。因此,您需要访问在Process方法(新线程)中创建Elmah的新实例。您可以按照上一个问题Using Elmah in a Console Application中的第二个或第三个答案来完成您想要的任务。