请问在Window Service程序中启用的线程中使用Mutex会生效吗?

Csharpbull 2008-01-03 09:21:26
请问在Window Service程序中启用的线程中使用Mutex会生效吗?

我的问题是这样的,我有个winform程序,里面启动了两个线程,一个是数据发送(socket),一个是接收的,为了访问文件的互斥,我使用了mutex,这时候发送和接收文件正常,不会丢包。


但是我现在将他修改成了window Service程序,结构一样,但是出现数据丢包现象?请问高手们是怎么回事?

是不是mutex的问题,还是其他的?请指教,谢谢。。。。
...全文
53 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Csharpbull 2008-01-03
  • 打赏
  • 举报
回复
在不同的应用程序中定义名字一样的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就会等待吗?请指教。谢谢。。。。
zhaochong12 2008-01-03
  • 打赏
  • 举报
回复
会生效的. 肯定不是mutex问题, 详查一下试试?
Csharpbull 2008-01-03
  • 打赏
  • 举报
回复
楼上的,我就是试了才说有问题的阿?

changjiangzhibin 2008-01-03
  • 打赏
  • 举报
回复
LZ何不试试
Csharpbull 2008-01-03
  • 打赏
  • 举报
回复
楼上答案好像解决不了我的问题,我尝试了下,没起作用。

我的实例是这样的:我有个数据发送服务一直在读取某个索引文件里面的内容进行发送文件,同时有个程序在望索引文件里面写内容,发送服务发完一条数据就把相应的索引文件里的信息删除。

我写的速度快了就会出现问题。

Csharpbull 2008-01-03
  • 打赏
  • 举报
回复
用Monitor可以解决我的问题吗?
zhaochong12 2008-01-03
  • 打赏
  • 举报
回复
嗯, 是的, 因为它是一个线程锁, 该资源同时只有一个可以访问 :)

晕, 刚看清楚, 怎么用mutex?
一个线程放Mutex的时候(用ReleaseMutex)它在机制上并不能保证另一个线程优先与自己得到Mutex

用Monitor处理.
Monitor.Enter(this);
Monitor.Pulse(this);
在这里处理可能冲突数据
Monitor.Exit(this);


111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧