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

.net 为什么在使用任务并行库任务时httpcontext对象不可用?,.net,task-parallel-library,.net,Task Parallel Library,我正在使用TPL在代码中创建新任务。所有这些都工作良好,性能有所提高。但只要存在像context.currentuser.iDentifier这样的HTTPContext对象。此代码引发一个异常,表示HTTP上下文对象不可用。空引用异常。 我想知道如何将上下文对象传递给任务对象?这是因为并行线程没有在同一上下文中执行。你需要通过考试。 在TPL中,您可以使用TaskScheduler.FromCurrentSynchronizationContext()传递上下文 在我的一个项目中,我做过这样的

我正在使用TPL在代码中创建新任务。所有这些都工作良好,性能有所提高。但只要存在像context.currentuser.iDentifier这样的HTTPContext对象。此代码引发一个异常,表示HTTP上下文对象不可用。空引用异常。
我想知道如何将上下文对象传递给任务对象?

这是因为并行线程没有在同一上下文中执行。你需要通过考试。 在TPL中,您可以使用
TaskScheduler.FromCurrentSynchronizationContext()
传递上下文

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

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

只有在处理传入请求的线程中访问HttpContext.Current时,HttpContext.Current才可能重复。使用TPL,您可以在不同的线程中执行代码。详细信息-@rene,这不是重复的。您提到的问题是泛型.NET framework空引用异常。这是一个完全重复的问题。这个错误非常常见,我们不打算调试它的每一次出现。特别是如果你没有。我不是要求调试。我只是想知道为什么会发生这种情况,以及如何传递上下文对象。