2つのスレッドを持つアプリケーションがあります。
ソケットを使用してデータをキャプチャし、DataTablesを更新する最初のスレッド(メインスレッド)
2番目はDataTablesをデータベースに挿入します。
アプリケーションは正常に動作しますが、閉じると、メインスレッドはデータの読み取りを終了し、2番目のスレッドでAbortメソッドを呼び出します。これはデータベースに挿入されている可能性があり、これによりデータの一貫性が失われます。
現在、「挿入中の中止」を克服するために、次のソリューションを使用しています
編集:強力な答えの後、私はコードを変更しました
void MainThread()
{
while(Read())
{
//Read Data through socket
try
{
//Wait on Mutex1
//Update Tables
}
finally
{
//Release Mutex1
}
}
_isrunning = false;
_secondThread.Join();
}
void SecondThread()
{
while(_isrunning)
{
try
{
//Wait on Mutex1
//Insert Tables into Database using transactions
}
finally
{
//Release Mutex1
}
}
}