程序中调用进程API时进程打开缓慢引起方法调用失败

程序中调用进程API时进程打开缓慢引起方法调用失败

昨天中了acaddoc.lsp的病毒,曾经为之困扰了很久,重装cad都搞不定,好在现在懂lisp了,所以今天写一个acaddoc.lsp的查杀工具,为了全盘搜索acaddoc.lsp文件,我使用了Everything的SDK,其搜索速度确实很惊艳。

Everything的SDK必须依赖于Everything.exe程序的运行,这个很麻烦,所以在引用这个程序时,我必须先用进程打开Everything.exe执行文件,然后再通过SDK的dll调用其搜索文件。程序写好后出现了一个问题,怎么搜索都无法搜索文件,后来网上搜资料,发现是CPU的平台问题,Everything是32位程序,而我采用的是anycpu,成默认的是64位优先,所以调用会出错,提示“调用了错误程序”,其解决办法是采用x86CPU,在.net4.5上,可以直接点取“首选32位”菜单。

好像扯远了,最重要的是程序调试好了之后,我发现在vs中运行无误,而我直接运行exe程序时却无法执行搜索,网上查资料说是引用程序路径不正确,经确认我的路径没问题,搞了半天,实在找不到啥原因,烦得不要不要的,后来灵光一现,貌似是exe程序打开的速度慢于我程序执行的速度,实际上我调用程序时,程序在进程中并未完全打开,所以造成失败。经过调整,把打开进程放在窗体加载的时候,然后在窗体关闭时关闭进程,效果立见,完美!

其实在调用程序前,应该判断进程中是否已经有此进程,然后再调用,记得去年写一个调用cad的程序也是遇到这种情况,无赖cad打开太慢,所以在程序中设置了暂停,以等待cad完全打开再运行程序。

通过以上两件事说明一个问题:调用exe进程时,一些exe文件的打开往往较慢,而我们的外壳程序又很简单执行很快时,往往会遇到这种情况,我的解决办法是在使用前判断进程是否成功打开,然后再做其他操作!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值