我需要帮助创建一个线程,C#winforms
private void button1_Click(object sender, EventArgs e) {
Thread t=new Thread(new ThreadStart(Start)).Start();
}
public void Start() {
MessageBox.Show("Thread Running");
}
我一直收到这条消息:
Cannot implicitly convert type 'void' to 'System.Threading.Thread
如何做msdn文档是不行的
答案 0 :(得分:15)
这样可行:
Thread t = new Thread (new ThreadStart (Start));
t.Start();
这也可行:
new Thread (new ThreadStart(Start)).Start();
MSDN文档是正确的,但你做错了。 :) 你这样做:
Thread t = new Thread (new ThreadStart(Start)).Start();
所以,你在这里做的是尝试将Start()方法返回的对象(无效)分配给Thread对象;因此错误信息。
答案 1 :(得分:3)
.NET框架还提供了一个方便的线程类BackgroundWorker。这很好,因为你可以使用VisualEditor添加它并设置它的所有属性。
这是关于如何使用backgroundworker的一个很好的小教程(带有图像): http://dotnetperls.com/backgroundworker
答案 2 :(得分:2)
尝试将其拆分:
private void button1_Click(object sender, EventArgs e)
{
// create instance of thread, and store it in the t-variable:
Thread t = new Thread(new ThreadStart(Start));
// start the thread using the t-variable:
t.Start();
}
Thread.Start
- 方法返回void
(即没有),所以当你写
Thread t = something.Start();
您正尝试将Start
- 方法的结果设置为t
- 变量。这是不可能的,因此您必须将语句拆分为两行,如上所述。