gpt4 book ai didi

c# - 在 C# 窗体关闭时替代异步/等待,因为等待永远不会返回?

转载 作者:行者123 更新时间:2023-11-30 13:07:00 26 4
gpt4 key购买 nike

<分区>

我有一个启动其他进程的 C# Windows 窗体应用程序。当表单关闭时,我需要关闭这些进程并确保它们已经消失,这样它们就不会像僵尸进程一样徘徊。我的策略是通过套接字桥向进程发送关闭命令,然后等待它们正常关闭。然而,3 秒后,如果它们还在附近,我会强行关闭它们(杀死它们)。

最初我使用了 await Task.Delay(3000) 指令,该指令存在于表单的Closing 事件中。但是那没有用。当 await Task.Delay(3000) 语句试图返回时,主线程已经消失,所以该语句之后的代码强制关闭子进程,如果它们还在 从未执行过。为了解决这个问题,我将 await Task.Delay(3000) 更改为普通的 Thread.Sleep(3000) 语句。现在执行 Thread.Sleep(3000) 之后的代码,因为线程从未像以前那样被切换。

但是,那是我的应用似乎没有响应的 3 秒。我可以改用什么技术来确保 3 秒等待后的代码肯定会执行,而不会阻塞主 UI 线程?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com