请问在Window Service程序中启用的线程中使用Mutex会生效吗?我的问题是这样的,我有个winform程序,里面启动了两个线程,一个是数据发送(socket),一个是接收的,为了访问文件的互斥,我使用了mutex,这时候发送和接收文件正常,不会丢包。
但是我现在将他修改成了window Service程序,结构一样,但是出现数据丢包现象?请问高手们是怎么回事?是不是mutex的问题,还是其他的?请指教,谢谢。

解决方案 »

  1.   

    会生效的. 肯定不是mutex问题, 详查一下试试?
      

  2.   

    在不同的应用程序中定义名字一样的mutex也能生效吗?比如:我在A程序中对F文件进行新增信息,然后B程序去读F文件中的信息,然后删除信息。ClassA
    {
      Mutex m_A = new Mutex(false,"WWW");
      m_A.WaitOne();
      DoA(操作文件F);
      m_A.RelaseMutex();
    }ClassB
    {
      Mutex m_B = new Mutex(false,"WWW");
      m_B.WaitOne(操作文件F);
      DoB();
      m_B.RelaseMutex();
    }请问以上能生效吗?当ClassA操作文件F的时候B就会等待吗?请指教。谢谢。
      

  3.   

    嗯, 是的, 因为它是一个线程锁, 该资源同时只有一个可以访问 :)晕, 刚看清楚, 怎么用mutex?
    一个线程放Mutex的时候(用ReleaseMutex)它在机制上并不能保证另一个线程优先与自己得到Mutex用Monitor处理.
    Monitor.Enter(this);
    Monitor.Pulse(this);
    在这里处理可能冲突数据
    Monitor.Exit(this); 
      

  4.   

    用Monitor可以解决我的问题吗?