gpt4 book ai didi

c# - Windows窗体中的线程

转载 作者:行者123 更新时间:2023-12-03 13:15:06 24 4
gpt4 key购买 nike

我多年来一直在编写ASP.NET Web应用程序,但实际上并没有在大型Windows窗体项目上工作。现在,我需要进行一项工作,因此我正在寻找一些有关理想情况下如何构造大型Windows窗体项目的建议。更具体地说,我想知道如何处理多个线程。假设您有一个过程需要一些时间才能完成-您不想冻结ui窗口并且不响应。因此,该逻辑需要在单独的线程中移动。如果此线程访问UI,则将导致异常。调用似乎可以解决问题,但是编写和阅读起来非常丑陋和繁琐!

那么,实际上,最佳实践是什么?一个线程应该启动哪种类型的线程,以及如何在UI和逻辑之间拆分这些线程?有任何示例代码可以入门吗?

最佳答案

这是使用backgroundworker的一种简短方法

        public Form1()
{
InitializeComponent();

BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true; //set to true to fire the progress-changed event
worker.DoWork += doWork;
worker.ProgressChanged += progressChanged;
}

void progressChanged(object sender, ProgressChangedEventArgs e)
{
int progress = e.ProgressPercentage; //Progress-Value
object userState = e.UserState; //can be used to pass values to the progress-changed-event
}

void doWork(object sender, DoWorkEventArgs e)
{
object argument = e.Argument; //Parameters for the call
bool cancel = e.Cancel; //Boolean-Value for cancel work
object result = e.Result; //Object for a return-value
}

关于c# - Windows窗体中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10991868/

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