现在有一个问题要是解决对数据库的同一个表有两个进程操作的问题,
我写了如下的代码在两个进程处,这样行吗?ThreadLock是一个静态类,里面有一个字符串做标记。receive 和send是两个状态。 #region 进行线程互斥
bool bFlag = true;
while (bFlag)
{
if (ThreadLock.Locker != "RECEIVE") //ThreadLock.Locker如果正处在接收状态
{
bFlag = false;
}
Application.DoEvents();
}
//在操作完成后还要有一个标记翻转操作
#endregion
ThreadLock.Locker = "RECEIVE"; //在这里翻转互斥锁的标记
我写了如下的代码在两个进程处,这样行吗?ThreadLock是一个静态类,里面有一个字符串做标记。receive 和send是两个状态。 #region 进行线程互斥
bool bFlag = true;
while (bFlag)
{
if (ThreadLock.Locker != "RECEIVE") //ThreadLock.Locker如果正处在接收状态
{
bFlag = false;
}
Application.DoEvents();
}
//在操作完成后还要有一个标记翻转操作
#endregion
ThreadLock.Locker = "RECEIVE"; //在这里翻转互斥锁的标记
代码
}
这样确保同步
应该把变量定义到最前面,程序运行时只能运行到一次的地方。
System.Threading.Mutex mutex = new Mutex(false, "MyMutext");mutex.WaitOne();
// things to be synchronized across process
mutex.ReleaseMutex();