C# 启动调试 开始执行(不调试)多线程程序执行效果不一样 Mutex(已解决)
2017-04-05 20:32
411 查看
具体来说是这样的:
1. 主线程创建了Mutex,并拥有该mutex的执行权。
2. 主线程调用了某个方法,该方法进入时调用mutex.waitone请求执行权
3. 该方法退出时调用mutex.releasemutex释放执行权。
4. 主线程创建了一个新线程A。
5. A在执行的时候也调用了上述方法。
6. 主线程代码执行完毕。
问题是:
1. 使用“开始调试”时,程序正常运行。
2. 使用“开始执行(不调试)”或直接运行生成的.exe文件时在上述第5步发生死锁,程序运行不正常。
已知上述方法调用时所有可能发生的异常均已捕获,且在捕获处已增加释放mutex的代码,线程A开始执行时,主线程代码已经走完。
问题解决:
主线程创建Mutex时,选择FALSE,默认不拥有执行权,则两种运行模式均正常运作。
原因未知,百度并没发现类似问题报告。
1. 主线程创建了Mutex,并拥有该mutex的执行权。
2. 主线程调用了某个方法,该方法进入时调用mutex.waitone请求执行权
3. 该方法退出时调用mutex.releasemutex释放执行权。
4. 主线程创建了一个新线程A。
5. A在执行的时候也调用了上述方法。
6. 主线程代码执行完毕。
问题是:
1. 使用“开始调试”时,程序正常运行。
2. 使用“开始执行(不调试)”或直接运行生成的.exe文件时在上述第5步发生死锁,程序运行不正常。
已知上述方法调用时所有可能发生的异常均已捕获,且在捕获处已增加释放mutex的代码,线程A开始执行时,主线程代码已经走完。
问题解决:
主线程创建Mutex时,选择FALSE,默认不拥有执行权,则两种运行模式均正常运作。
原因未知,百度并没发现类似问题报告。
相关文章推荐
- c#.net无法直接启动带有“类库输出类型”的项目 若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项-----解决办法
- 解决 无法启动调试。绑定句柄无效 开始执行(不调试) 错误
- 解决VS2008调试过程中无法启动程序或找不到元素
- 启动调时错误"无法启动调试 没有正确安装调试器 请运行安装程序安装或修复调试器"的解决办法
- "无法在web服务器上启动调试,不具备调试此程序的权限" 问题解决
- 利用C#线程窗口调试多线程程序
- VS(C#)试图运行项目时出错,无法启动调试,绑定句柄无效解决办法
- 解决VB可执行程序启动错误: "应用程序配置不正确,应用程序未能启动"
- c#使用process.start启动程序报错解决方法
- 利用C#线程窗口调试多线程程序
- vs 2005调试程序是出现无法在web服务器上启动调试,调试失败的解决方法。
- 解决VB可执行程序启动错误: "应用程序配置不正确,应用程序未能启动"
- "无法在web服务器上启动调试,不具备调试此程序的权限" 问题解决
- c# 更改注册表开机启动+mutex(互斥,同一时间同一台电脑只能运行一个程序)
- C# Windows服务启动错误1083配置成在该可执行程序中运行的这个服务不能执行该服务
- 多线程编程答案篇(C#和Java):解决pull和push模式在同一个程序中的冲突
- “无法在Web服务器上启动调试.你不具备调试此程序的权限,此项目的URL位于Internet区域”的解决方法
- vs2003启动调试时出现“无法启动调试器,请运行安装程序安装或修复调试器”的解决办法
- 调试时出现:“没有找到 MSVCR80D.dll,因此这个程序未能启动,重新安装应用程序,可能会修复此问题”错误提示,如何解决?
- 利用C#线程窗口调试多线程程序