gpt4 book ai didi

C# 线程 ListView

转载 作者:行者123 更新时间:2023-11-30 22:23:41 26 4
gpt4 key购买 nike

我是 .net 的新手,我仍然在努力理解很多东西,现在我正在尝试完成一些相对简单的事情,但我每次都失败了,我想补充一个线程到我的程序,这个线程将负责执行上传到 Web 服务器的操作,并保持我的程序响应通过更新 ListView 向我的用户提供操作反馈,用户将在其中看到文件的所有状态上传。

我不知道如何将这个 Thread 放入程序中以使其响应,到目前为止我找不到任何示例,我正在尝试找到一个小示例来向我展示 Thread 和 WinForms 在行动。

最佳答案

您需要使用的是 BackgroundWorker。它正是为此目的而专门设计的。

private void button1_Click(object sender, EventArgs e)
{
BackgroundWorker bgw = new BackgroundWorker();

bgw.DoWork += (_, args) => LongRunningTask(bgw);
bgw.WorkerReportsProgress = true;
bgw.ProgressChanged += (_, args) =>
{
textbox1.Text = args.ProgressPercentage.ToString();
};
bgw.RunWorkerCompleted += bgw_RunWorkerCompleted;

bgw.RunWorkerAsync();
}

private void LongRunningTask(BackgroundWorker bgw)
{
for (int i = 0; i < 10; i++)
{
Thread.Sleep(1000);//placeholder for real work
bgw.ReportProgress(i);
}
}

private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//do stuff when completed.
}

需要注意的一个关键点是DoWork 事件在后台线程中运行,但其他事件都在UI 线程中运行。 BackgroundWorkder 类负责确保所有内容独立完成。

关于C# 线程 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13274990/

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