我有一个第三方exe文件名Projtest.exe并使用我自己编写的c#控制台应用程序通过命令行运行Projtest.exe。 我能够成功编写应用程序,但我的问题是,由于一些未知的原因,Projtest.exe停止工作并抛出一个错误窗口。我的应用程序正在坚持这一点。我想要的是继续我的应用程序,如果Projtest。 exe会抛出一个错误窗口。我怎么能这样做。我的代码部分如下所示。
try
{
var pro = new Process
{
StartInfo = {
Arguments = string.Format("Projtest.exe {0} {1} ", arg1, arg2)
}
};
pro.Start();
pro.WaitForExit();
var exit = pro.ExitCode;
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
答案 0 :(得分:0)
你可以做的是定期检查'专家'是否每10秒响应一次。 您只需使用计时器即可完成此操作,或者您可以创建一个线程来执行此操作。 此外值得检查退出此处,因此您不会阻止您的申请。 这是一个带计时器的例子。
static Timer appCheck = new Timer();
static Process pro;
static void Main(string[] args)
{
appCheck.Interval = (10000); // set timer interval in ms
appCheck.AutoReset = true;
appCheck.Elapsed += new ElapsedEventHandler(appCheck_Tick);
try
{
pro = new Process
{
StartInfo =
{
Arguments = string.Format(@"Projtest.exe"),
FileName = string.Format(@"Projtest.exe")
}
};
pro.Start(); // starts your program
appCheck.Start(); // starts the timer to keep a watch on your program
while (true) // this just keeps your console window open. if you use waitForExit your application will be blocked and the timer won't fire.
{
}
//pro.WaitForExit();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
static void appCheck_Tick(object sender, EventArgs e)
{
if (!pro.HasExited)
{
if (pro.Responding == false)
{
appCheck.Stop(); // stop the timer so you don't keep getting messages
Console.WriteLine("Not responding");
}
}
else
{
appCheck.Stop(); // stop the timer so you don't keep getting messages
Console.WriteLine("exited");
}
}