第一次多线程器
本文关键字:多线程 第一次 | 更新日期: 2023-09-27 18:30:50
我第一次尝试使用线程,并提出了这个:
Thread myThread = new Thread(() =>
{
test = Class1.getNumbers(param1, param 2);
MessageBox.Show(test.toString());
});
不过,这对我没有任何作用。我做错了什么?
您没有启动线程。
myThread.Start();
(您在 MessageBox 调用中也有一个语法错误...
我第一次尝试使用线程
尽量避免直接使用 Thread 类。这是很少需要的。
查:
- 后台工作者
- 任务并行库
- 线程池
多或少按照这个顺序。
它们都在线程之上提供层来帮助您。
阅读一本非常好的书中的免费章节(诚实的插头 - 这里没有动力):
它是共识,并以渐进的方式为您提供所需的专业知识,因此您不会太快地进入太高的水平。 你的问题的答案在前几段...
您需要
通过调用 Start
来启动线程。
此外,重要的是要注意MessageBox.Show
泵送消息。这就是为什么它可以正常工作1 而无需显式调用该线程上的 Application.Run
。但是,大多数 UI 窗体和控件都不能以这种方式工作。通常不要尝试从工作线程访问或创建任何 UI 元素。
1从技术上讲,MessageBox
可以从主 UI 线程以外的线程工作,但它可能会导致一些奇怪的问题。例如,此消息框可能会停滞在 UI 线程显示的模式对话框后面。正是出于这个原因,除其他外,不建议显示来自工作线程的 UI 元素,即使它们是通过 Form.ShowDialog
或 MessageBox.Show
等自抽水调用完成的。