Windows服务用 Proccess 调用 exe 卡住

吉普赛的歌 2018-05-30 09:02:25
加精
Windows 服务和 exe 都是我写的。
Windows服务的功能: 通用的定时功能, 通过配置动态创建定时器, 通过 Proccess 调用外部的 exe 文件。
exe 也是 C# 写的, 功能是对目标文件夹中文件的一些压缩、复制、移动的一些操作。

Windows 服务在调用其它比较简单的 exe 时, 都是非常顺利的。
但调用那个特定的 exe 文件, 在目标文件夹里有一些子文件夹时就会卡住, 执行到一半就不执行了(相关的日志不再有,而且exe进程也不退出), 但不报异常。 等很久也没反应, 但在停止服务时, exe 文件又奇迹般地开始执行了(从exe的日志可以看到)。

另外: exe 在 cmd 下执行是完全没有问题的。

哪位大神有经验的, 请赐教!
...全文
2286 点赞 收藏 17
写回复
17 条回复
OwenZeng_DBA 2018年05月31日
哈哈,说明还是自己厉害
回复 点赞
吉普赛的歌 2018年05月31日
已经解决了, 是 exe 输出内容太多导致了死锁, 可以禁用输出或者是异步输出。 随便来几个人结贴吧。
回复 点赞
真相重于对错 2018年05月31日
调试不一定非要在IDE里。
回复 点赞
吉普赛的歌 2018年05月31日
引用 5 楼 earlsen 的回复:
Windows 服务和 exe 文件是不是都是同一个框架写的? 要注意64位 和 32位的问题
是同一框架, 都是 64 位下的
回复 点赞
吉普赛的歌 2018年05月31日
引用 4 楼 xuzuning 的回复:
触发周期小于运行时间,可能因共享冲突造成死锁 停止服务后,因再无新的触发请求,使已有线程得以顺利运行
不是, 重入问题已解决, 重入时未执行完会直接放弃。
回复 点赞
吉普赛的歌 2018年05月31日
引用 7 楼 qq_17486399 的回复:
[quote=引用 4 楼 xuzuning 的回复:] 触发周期小于运行时间,可能因共享冲突造成死锁 停止服务后,因再无新的触发请求,使已有线程得以顺利运行
+1[/quote] 不是, 重入问题已解决, 重入时未执行完会直接放弃。
回复 点赞
wanghui0380 2018年05月31日
代码在哪里?
回复 点赞
物联网_咸鱼 2018年05月31日
引用 4 楼 xuzuning 的回复:
触发周期小于运行时间,可能因共享冲突造成死锁 停止服务后,因再无新的触发请求,使已有线程得以顺利运行
+1
回复 点赞
正怒月神 2018年05月31日
1 首先应该是代码问题了。因为简单的exe运行没有问题。 2 “exe 也是 C# 写的, 功能是对目标文件夹中文件的一些压缩、复制、移动的一些操作。但调用那个特定的 exe 文件, 在目标文件夹里有一些子文件夹时就会卡住, 执行到一半就不执行了。” 操作的方式是什么?多线程的吗?资源被独占访问导致的? 3 文件夹权限有吗?这个导致问题的可能性不大。
回复 点赞
earlsen 2018年05月31日
Windows 服务和 exe 文件是不是都是同一个框架写的? 要注意64位 和 32位的问题
回复 点赞
xuzuning 2018年05月31日
触发周期小于运行时间,可能因共享冲突造成死锁 停止服务后,因再无新的触发请求,使已有线程得以顺利运行
回复 点赞
51Crack 2018年05月31日
不用timer
回复 点赞
wowocpp 2018年05月31日
厉害啊 用到 递归了
回复 点赞
足球中国 2018年05月31日
附加进程,按下暂停键,看代码停在哪个地方就OK了。当然你要可以选择OD,WINDEUBG等工作来做
回复 点赞
吉普赛的歌 2018年05月30日
@sp1234
引用 1 楼 DOwnstairs 的回复:
感觉应该是代码的问题。。仔细看看,应该有哪地方写的不完善。。。递归了?
确实有递归。 但直接执行很顺利, 30秒就能执行完
回复 点赞
SoulRed 2018年05月30日
感觉应该是代码的问题。。仔细看看,应该有哪地方写的不完善。。。递归了?
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告