2016-11-10 1 views
2

私のプログラムには2つの方法があります。私はStartProcessing()メソッドを呼び出すときにスレッドを使用しているときに更新されたデータが得られません

Public void StartProcessing() 
{ 
    Thread.Sleep(30000) 
    bool isActive = _repository.FindBy(s=>s.UId == 1).isActive //Linq Query 
} 

Public void EndProcessing()  
{ 
    //Update data 
} 

だから、30秒待つと、30秒後には、SQLからデータを返します。だから問題は、私が30秒前にデータを更新しているときに、更新されたデータが返ってこないということです。 私にこれを解決してください。

答えて

2

1)は、スレッド、使用のタスク(タスク並列ライブラリ)

を使用しないでください)各スレッド
2には多くのthreads.Create新しいコンテキスト/リポジトリに(私はあなたがEFを使用すると仮定)あなたのコンテキストを再利用しないでください。

FindByはおそらく、読み込まれたアイテムを最初にチェックすると思います。そのため、「古い」データが得られます。
"1"に従うと、問題が解決する可能性があります。
そうでない場合は、おそらくユーザーを更新しないでください....

+0

おかげさまでよろしくお願いします。あなたは私の問題を解決しました。 – Kanish

関連する問題