我正在使用TPL在我的代码中创建新任务。一切都适用于提高性能。但每当有像context.currentuser.iDentifier这样的HTTPContext对象时。此代码抛出一个异常,说HTTP Context对象不可用。空引用异常。 我想知道如何将上下文对象传递给任务对象?
答案 0 :(得分:5)
这是因为并行线程没有在相同的上下文中执行。你需要传递SynchronizationContext它。
在TPL中,您可以使用TaskScheduler.FromCurrentSynchronizationContext()
来传递上下文。
在我的一个项目中,我做过类似的事情 -
Task.Factory.StartNew(() => MyMethod(),
CancellationToken.None,
TaskCreationOptions.None,
TaskScheduler.FromCurrentSynchronizationContext());