gpt4 book ai didi

c# - "Do some work and quit"的最佳模式

转载 作者:行者123 更新时间:2023-11-30 19:21:16 28 4
gpt4 key购买 nike

我目前正在编写一个小的 GUI 程序,它可以完成一些工作并在之后退出。工作完成后,GUI 线程会更新用户的信息。

这是我目前使用的模式,我认为它不是最优雅的模式:

static void MainForm_Loaded(BeoExport exporter)
{
// Thread 1 runs the Export
workerThread = new Thread(() =>
{
exporter.StartExport();
// don't exit immediately, so the user sees someting if the work is done fast
Thread.Sleep(1000);
});

// Thread 2 waits for Thread 1 and exits the program afterwards
waiterThread = new Thread(() =>
{
workerThread.Join();
Application.Exit();
});

workerThread.Start();
waiterThread.Start();
}

那么你会使用什么模式/机制来做同样的事情?

澄清一下:我对更新 GUI 线程的方法不感兴趣。那已经完成了。这听起来可能很深奥,但我一直在寻找退出应用程序的正确方法。

如果可以的话,我会把功劳归功于 Dave,因为他指出了 BackgroundWorker 的用处。

最佳答案

您是否考虑过使用 BackgroundWorker 线程?您可以使用它的 ReportProgress 方法和 ProgressChanged 事件来更新 GUI(可能带有进度条),假设您可以重构 BeoExport.StartExport方法也报告进度。这为用户提供了工作实际发生的可见反馈。

关于c# - "Do some work and quit"的最佳模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3770163/

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