【发布时间】:2010-11-14 23:26:28
【问题描述】:
private void button1_Click(object sender, EventArgs e)
{
PROGRESS_BAR.Minimum = 0;
PROGRESS_BAR.Maximum = 100;
PROGRESS_BAR.Value = 0;
for (int i = 0; i < 100; i++)
{
Thread t = new Thread(new ThreadStart(updateProgressBar));
t.IsBackground = true;
t.Start();
}
}
private void updateProgressBar()
{
PROGRESS_BAR.PerformStep();
Thread.Sleep(4000);
}
我总是收到这个错误: 跨线程操作无效:控件''从创建它的线程以外的线程访问。
我试图在 google 中搜索解决方案,但不幸的是,它们都不适合我。有谁知道如何解决这个问题? 提前谢谢..
【问题讨论】:
-
一次创建一百个线程是一个可怕的想法。
-
我只是在测试这个。我还是 C# 新手。
-
您可能误解了线程。您的代码创建了一百个线程(尝试)同时增加进度条。在他们都(尝试)增加它之后,他们都会睡觉,然后退出。
-
我正在尝试将它用于其他更“高级”的用途。此外,我将同时使用 5 个线程来处理 1000 多个文档。每当有 1 个线程退出时,我都会调用新的线程来处理新文档。等等。
-
提示:查看线程池。这样做是为了确保您刚才提到的 onece 任务尽可能快。只需致电
ThreadPool.QueueWorkerTask(delegate void())(或类似的东西,只需谷歌.Net ThreadPool 教程或其他东西)。
标签: c# progress-bar multithreading