首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当应用程序已在运行时,WaitForExit不工作

当应用程序已在运行时,WaitForExit不工作
EN

Stack Overflow用户
提问于 2017-07-20 13:38:14
回答 2查看 167关注 0票数 1

我有以下代码:

代码语言:javascript
代码运行次数:0
运行
复制
Process MSWprocess = new Process();
if (CommandToMSWord[1][1] == "Edit")
{
    MSWprocess = Process.Start(PatientLetterDocx);
}
MSWprocess.WaitForExit();  
if (CommandToMSWord[2][1].ToUpper() == "FALSE" && MSWprocess.HasExited)
{
    File.Delete(PatientLetterDocx); 
}

其中MSWprocess将打开MS Word文档,如果用户想要在退出时自动保存,则CommandToMSWord[2][1].ToUpper()应为TRUE,否则文档将在关闭MS Word文档时被删除。

当我第一次执行该程序时,它会一直等到MS Word关闭。当我执行同一程序的另一个实例时,第一个实例仍在运行(仍在等待MS word关闭),第二个实例不再关心WaitForExit(),并导致运行时错误,因为该程序正在删除一个仍处于打开状态的文件。

我希望它是这样的,即使程序同时运行多次,WaitForExit()每次都应该真正完成它的一部分。

你知道为什么多个实例不能同时工作吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-07-20 13:57:06

这是因为Word的工作方式。当Word进程正在运行时,当您启动另一个进程时,信息将传递给第一个进程并退出第二个进程。文档实际上是由第一个进程打开的。您可以使用command line switches让word为您的文件单独运行进程。如果我没记错的话,它是/t,虽然我目前还没有安装Word,所以我不能检查这个。

票数 1
EN

Stack Overflow用户

发布于 2017-07-20 13:45:09

您应该改为将MSWprocess声明为局部变量。因为您不是在每次运行此代码段时都这样做,它将覆盖实例变量。试试这个吧。

代码语言:javascript
代码运行次数:0
运行
复制
var MSWprocess = Process.Start(PatientLetterDocx);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45206014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档