アプリケーションのマルチスレッドソリューションを探していましたが、NullReferenceException
それぞれを連続して実行してすべてがスムーズに進んだ場合とは対照的に、試行するとランダムエラーが発生し続けます。
私がやっていることは、ある場所から別の場所への旅を計算してから、帰りの旅を計算することです。復路の計算は、出発地と目的地を切り替えただけで、同じプロセスを使用するだけです。
これは、EntityFrameworkを使用するASP.netMVC3アプリのマルチスレッドでこれを行うのに適していますか?EFに問題があると思われる記事をいくつか見ましたが、これらはDBContextがページで共有されている場合にのみ問題になるようですが、データベースにアクセスする必要があるすべての領域でUsingステートメントを使用しました。誰かここで何か経験がありますか?
私がこれまでに持っている基本的な関連コードはこれです:
var outboundJourneyTask = Task.Factory.StartNew(() => BuildJourney(true));
var returnJourneyTask = Task.Factory.StartNew(() => BuildJourney(false));
Task.WaitAll(outboundJourneyTask, returnJourneyTask);
私が望んでいたのは、各タスクが新たに開始されることでしたが、null参照の例外のため、2番目のスレッドでは、最初のスレッドで構築された配列を使用しようとしていると思います。特定の要素が見つからない場合は、エラーをスローします。
これはありそうですか?誰かがこれを行うためのより良い方法を知っていますか?
編集:私は別のスレッド方法を試していますが(以下を参照)、配列で実際に奇妙なことが起こっています-異なる方法でループし、エラーをスローします
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();
}
ありがとう