c# – 使线程等待退出而不诉诸Thread.Sleep()

c# – 使线程等待退出而不诉诸Thread.Sleep(),第1张

概述在我的一个应用程序中尝试简单的线程 *** 作时,我遇到了一个问题,试图绕过我做错的事情. 这就是我所追求的:我希望主线程产生一个单独的线程;单独的线程将打开一个程序,为该程序提供一个参数(文件名),然后一旦该程序关闭,子线程将终止,主线程可以继续它的工作.我已经创建了一个非常简单的代码示例来说明.确实,它甚至不是一个单独的线程,它只需要等到程序完成它的工作.我在这做错了什么?非常感激任何的帮助! cla 在我的一个应用程序中尝试简单的线程 *** 作时,我遇到了一个问题,试图绕过我做错的事情.

这就是我所追求的:我希望主线程产生一个单独的线程;单独的线程将打开一个程序,为该程序提供一个参数(文件名),然后一旦该程序关闭,子线程将终止,主线程可以继续它的工作.我已经创建了一个非常简单的代码示例来说明.确实,它甚至不是一个单独的线程,它只需要等到程序完成它的工作.我在这做错了什么?非常感激任何的帮助!

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已经在等待进程退出…为什么要引入一个新线程?也许我错过了一些东西……

总结

以上是内存溢出为你收集整理的c# – 使线程等待退出而不诉诸Thread.Sleep()全部内容,希望文章能够帮你解决c# – 使线程等待退出而不诉诸Thread.Sleep()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1224508.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存