首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Process.WaitForExit

如何使用Process.WaitForExit
EN

Stack Overflow用户
提问于 2011-06-15 00:13:31
回答 3查看 47.7K关注 0票数 2

我正在调用一个第三部分的应用程序,它‘有时’在VB.NET中工作(它是一个自托管的WCF)。但有时第三方应用会永远挂起,所以我给它加了一个90秒的计时器。问题是,我怎么知道它是否超时了?

代码如下所示:

代码语言:javascript
复制
Dim MyProcess as System.Diagnostics.Process = System.Diagnostics.Process.Start(MyInfo)
MyProcess.WaitForExit(90000)

我想做的事情是这样的

代码语言:javascript
复制
If MyProcess.ExceededTimeout Then
    MyFunction = False
Else
    MyFunction = True
End If

有什么想法吗?

谢谢,

杰森

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-15 00:16:30

检查方法返回值- http://msdn.microsoft.com/en-us/library/ty0d8k56.aspx -如果调用超时,将返回False。

票数 4
EN

Stack Overflow用户

发布于 2011-06-15 00:22:13

在过去,已经有一些已知的问题,应用程序在使用WaitForExit时会冻结。

您需要使用

代码语言:javascript
复制
dim Output as String = MyProcess.StandardOutput.ReadToEnd()

在调用之前

代码语言:javascript
复制
MyProcess.WaitForExit(90000)

请参阅Microsoft的代码片段:

代码语言:javascript
复制
// Start the child process.
 Process p = new Process();
 // Redirect the output stream of the child process.
 p.StartInfo.UseShellExecute = false;
 p.StartInfo.RedirectStandardOutput = true;
 p.StartInfo.FileName = "Write500Lines.exe";
 p.Start();
 // Do not wait for the child process to exit before
 // reading to the end of its redirected stream.
 // p.WaitForExit();
 // Read the output stream first and then wait.
 string output = p.StandardOutput.ReadToEnd();
 p.WaitForExit();

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx

票数 5
EN

Stack Overflow用户

发布于 2013-02-06 15:32:52

代码语言:javascript
复制
if(process.WaitForExit(timeout)) {
    // user exited
} else {
    // timeout (perhaps process.Kill();)
}

Async process start and wait for it to finish

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6346651

复制
相关文章

相似问题

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