c# – 使线程等待退出而不诉诸Thread.Sleep()
发布时间:2020-12-15 19:37:21 所属栏目:百科 来源:网络整理
导读:在我的一个应用程序中尝试简单的线程操作时,我遇到了一个问题,试图绕过我做错的事情. 这就是我所追求的:我希望主线程产生一个单独的线程;单独的线程将打开一个程序,为该程序提供一个参数(文件名),然后一旦该程序关闭,子线程将终止,主线程可以继续它的工作.
在我的一个应用程序中尝试简单的线程操作时,我遇到了一个问题,试图绕过我做错的事情.
这就是我所追求的:我希望主线程产生一个单独的线程;单独的线程将打开一个程序,为该程序提供一个参数(文件名),然后一旦该程序关闭,子线程将终止,主线程可以继续它的工作.我已经创建了一个非常简单的代码示例来说明.确实,它甚至不是一个单独的线程,它只需要等到程序完成它的工作.我在这做错了什么?非常感激任何的帮助! class Program { static void Main(string[] args) { Console.WriteLine("Opening...."); var t = new Thread(StartProgram); t.Start(); t.Join(); Console.WriteLine("Closed"); Console.ReadLine(); } private static void StartProgram() { var startInfo = new ProcessStartInfo(); startInfo.FileName = @"c:program.exe"; startInfo.Arguments = @"file.txt"; var p = Process.Start(startInfo); p.WaitForExit(); } } 解决方法
你为什么要打扰一个单独的线程呢?您当前的Main方法可以更简单地重写为:
static void Main(string[] args) { Console.WriteLine("Opening...."); StartProgram(); Console.WriteLine("Closed"); Console.ReadLine(); } StartProgram已经在等待进程退出…为什么要引入一个新线程?也许我错过了一些东西…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容