现在有一个问题要是解决对数据库的同一个表有两个进程操作的问题,
我写了如下的代码在两个进程处,这样行吗?ThreadLock是一个静态类,里面有一个字符串做标记。receive 和send是两个状态。                #region 进行线程互斥
                
                bool bFlag = true;
                while (bFlag)
                {
                    if (ThreadLock.Locker != "RECEIVE")    //ThreadLock.Locker如果正处在接收状态
                    {
                        bFlag = false;
                    }
                    Application.DoEvents();
                }
                //在操作完成后还要有一个标记翻转操作
                #endregion
ThreadLock.Locker = "RECEIVE";     //在这里翻转互斥锁的标记   

解决方案 »

  1.   

    sychronized(某个object){
       代码
    }
    这样确保同步
      

  2.   

    每次运行到 bool bFlag = true; 内存里就会重新分配一个变量bFlag,并赋成true值。
    应该把变量定义到最前面,程序运行时只能运行到一次的地方。
      

  3.   

    用lock锁一个静态字符串在两个地方也可以吧?
      

  4.   

    You might use a named mutex:
    System.Threading.Mutex mutex = new Mutex(false, "MyMutext");mutex.WaitOne();
    // things to be synchronized across process
    mutex.ReleaseMutex();
      

  5.   

    楼上正解,进程同步用Mutex,线程同步用Monitor
      

  6.   

    对数据库的表加锁,你用进程间的互斥做什么?应该从数据库的访问上比如sql语句来考虑