在线程下运行外部.exe

时间:2013-02-16 16:12:01

标签: wpf c#-4.0 backgroundworker

我需要在我的WPF项目下运行外部exe“ embed.exe ”,

这是一个片段

ProcessStartInfo processInf = new ProcessStartInfo("embed.exe");
processInf.Arguments = string.Format(@"Some arguments");
processInf.WindowStyle = ProcessWindowStyle.Hidden;
Process run = Process.Start(processInf);

我的问题是它阻止了我的用户界面,

有没有办法使用线程或任何不会阻止UI的代码包含 embed.exe

2 个答案:

答案 0 :(得分:1)

行,

尝试将您之前的代码段放入方法中,然后创建一个新线程并将其初始化为该方法。

这里是如何制作的 //磨练代码

private void EmbedMethod()
{
ProcessStartInfo processInf = new ProcessStartInfo("embed.exe");
processInf.Arguments = string.Format(@"Some arguments");
processInf.WindowStyle = ProcessWindowStyle.Hidden;
Process run = Process.Start(processInf);
}

Thread embedThread=new Thread(EmbedMethod);
embedThread.start();

答案 1 :(得分:0)

您开始的过程是在自己的线程上运行,而不是您的应用程序用来启动它的线程。

要终止您的embed.exe进程,您需要保持对已启动进程的引用。在这种情况下运行变量。要终止进程调用: run.CloseMainWindow()或run.Kill()。 Kill强制终止进程,而CloseMainWindow仅请求终止。