我有一个有两个线程的应用程序。
第一个(主线程)使用套接字捕获数据并更新 DataTables
第二个将 DataTables 插入数据库。
应用程序工作正常,但是当它关闭时,主线程完成读取数据并在第二个线程中调用 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
}
}
}