一直在为我的应用程序寻找多线程解决方案,但是NullReferenceException
当我尝试时不断出现随机错误,而不是当我连续运行每个错误并且一切顺利时。
我正在做的是计算从一个地方到另一个地方的旅程,然后计算回程。回程计算只是使用相同的过程,只是换了出发地和目的地。
在带有实体框架的 ASP.net MVC3 应用程序中使用多线程执行此操作听起来可行吗?我看过一些似乎 EF 存在问题的文章,但这些听起来只是当 DBContexts 在页面上共享时才会出现问题,而我在需要访问数据库的所有区域都使用了 Using 语句. 有人在这里有经验吗?
到目前为止,我拥有的基本相关代码是这样的:
var outboundJourneyTask = Task.Factory.StartNew(() => BuildJourney(true));
var returnJourneyTask = Task.Factory.StartNew(() => BuildJourney(false));
Task.WaitAll(outboundJourneyTask, returnJourneyTask);
我希望每个任务都能重新开始,但由于空引用异常,我相信在第二个线程中,它正在尝试使用第一个内置的数组,当它找不到某些元素时,它抛出错误。
这听起来可能吗?有人知道这样做的更好方法吗?
编辑:我正在尝试一种不同的线程方法(见下文),但我的数组确实发生了一些奇怪的事情——以不同的方式循环它们并抛出错误
Thread t1 = new Thread(ThreadMethod1);
t1.Start();
Thread t2 = new Thread(ThreadMethod2);
t2.Start();
void ThreadMethod1(object state)
{
BuildJourney(false);
ManualResetEvent mre = (ManualResetEvent)state;
mre.Set();
}
void ThreadMethod2(object state)
{
BuildJourney(true);
ManualResetEvent mre = (ManualResetEvent)state;
mre.Set();
}
谢谢