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

kev*_*ing 3 .net task-parallel-library

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

Yog*_*ogi 5

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

在我的一个项目中,我做到了这样的事情 -

 Task.Factory.StartNew(() => MyMethod(),
                          CancellationToken.None,
                          TaskCreationOptions.None, 
                          TaskScheduler.FromCurrentSynchronizationContext());
Run Code Online (Sandbox Code Playgroud)