使用任务并行库任务时为什么httpcontext对象不可用?

时间:2017-01-13 11:20:44

标签: .net task-parallel-library

我正在使用TPL在我的代码中创建新任务。一切都适用于提高性能。但每当有像context.currentuser.iDentifier这样的HTTPContext对象时。此代码抛出一个异常,说HTTP Context对象不可用。空引用异常。 我想知道如何将上下文对象传递给任务对象?

1 个答案:

答案 0 :(得分:5)

这是因为并行线程没有在相同的上下文中执行。你需要传递SynchronizationContext它。 在TPL中,您可以使用TaskScheduler.FromCurrentSynchronizationContext()来传递上下文。

在我的一个项目中,我做过类似的事情 -

 Task.Factory.StartNew(() => MyMethod(),
                          CancellationToken.None,
                          TaskCreationOptions.None, 
                          TaskScheduler.FromCurrentSynchronizationContext());