【发布时间】:2017-12-25 02:52:03
【问题描述】:
下面的代码演示了两种创建线程的方法,该线程执行相同的工作,但只有一种有效,另一种无效。据我所知,不同之处在于声明了一个变量 - 有人可以帮助解释为什么这会导致Error: Cannot implicitly convert type 'void' to 'System.Threading.Thread'?
public MainWindow()
{
InitializeComponent();
// Runs OK
new Thread(() => { MessageBox.Show("foo");}).Start();
// Error: Cannot implicitly convert type 'void' to 'System.Threading.Thread'
Thread t = new Thread(() => { MessageBox.Show("foo”); }).Start();
}
【问题讨论】:
-
Start 返回 void 并且您正在尝试将其分配给线程
-
注意编译器消息。它们很有用。一条消息说它不能将一种类型转换为另一种类型,这表明在某种赋值中,具有一种类型的表达式不能转换为赋值目标所需的类型。在您的情况下,您尝试将方法的返回值分配给变量,而该方法甚至不返回值。如果您在网站上搜索该错误消息,您会发现少数问答的标记重复项,其中包含大量信息供您自己理解错误消息
标签: c# wpf multithreading