C#中的线程生成错误

C#中的线程生成错误,c#,multithreading,C#,Multithreading,我正在使用以下代码: private void Form1_Load(object sender, EventArgs e) { } private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { string response = serialPort1.ReadLine(); this.BeginInvoke(new MethodIn

我正在使用以下代码:

private void Form1_Load(object sender, EventArgs e)
{

}

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
    string response = serialPort1.ReadLine();
    this.BeginInvoke(new MethodInvoker(
        () => textBox1.AppendText(response + "\r\n")
    ));
}

ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork);
Thread myThread = new Thread(myThreadDelegate);
myThread.Start();
但是我犯了很多错误:

错误2找不到类型或命名空间名称“ThreadStart” (是否缺少using指令或程序集引用?) C:\Users\alexluvsdanielle\AppData\Local\Temporary 项目\WindowsFormsApplication1\Form1.cs 31 44 Windows窗体应用程序1

错误3当前上下文中不存在名称“ThreadWork” C:\Users\alexluvsdanielle\AppData\Local\Temporary 项目\WindowsFormsApplication1\Form1.cs 31 56 Windows窗体应用程序1

错误4找不到类型或命名空间名称“Thread”(是 是否缺少using指令或程序集引用?) C:\Users\alexluvsdanielle\AppData\Local\Temporary 项目\WindowsFormsApplication1\Form1.cs 32 31 Windows窗体应用程序1

错误5字段初始值设定项无法引用非静态字段, 方法或属性“WindowsFormsApplication1.Form1.myThreadDelegate” C:\Users\alexluvsdanielle\AppData\Local\Temporary 项目\WindowsFormsApplication1\Form1.cs 32 38 Windows窗体应用程序1


我做错了什么?

线程
线程启动
系统中。线程

使用系统线程添加
到代码顶部的名称空间


ThreadWork
不是.NET中定义的类。我在示例代码中找到了一个MSDN页面。因此,您需要将其替换为定义了
DoWork
方法的类的名称。如果它与此代码在同一个类中,则只需使用System.Threading在代码文件中传递
DoWork

对于start,请确保具有

using System.Threading;
在文件的顶部


此外-不能调用
myThread.Start()在方法之外。

您应该将以下代码放在C代码文件的顶部:

使用System.Threading

其他人已经给出了这个特定问题的解决方案,但“我做错了什么?”的真正答案是(IMO)“你没有阅读错误消息”。错误消息的存在有一个原因:作为提示告诉你什么是错误的

您已收到以下几条错误消息:

类型或命名空间名称“Fpp” 找不到(您是否缺少 使用指令或程序集 参考?)

错误消息在这里提示您:它找不到类型,但这可能是因为您没有获得正确的引用或使用
指令。因此,请检查您的引用,并使用
指令检查您的
。在本例中,
Thread
位于
mscorlib
中,因此不太可能出现程序集引用问题-因此,下一步要检查的是使用
指令的
。它位于
System.Threading
命名空间中,因此您需要

using System.Threading;
在顶部-当然,您可以到处指定System.Threading.Thread,但这有点冗长

仔细阅读错误消息通常意味着你不需要问你做错了什么:他们会告诉你,就像他们在这里做的那样


线程工作
错误的修复更难确定-您应该使用希望在新线程中执行的任何方法。。。假设你真的想自己开始一个新的线程。你确定你真的这么做了吗?

也许我在这里提到了“出血”这一点,但从代码示例来看,你的代码块:

ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork);
Thread myThread = new Thread(myThreadDelegate);
myThread.Start();
不在方法中。我以前做过这件事


一旦你解决了这个问题,其他答案显然会适用。

你有使用System.Threading的
该文件中的行?你的线程代码块不在方法中。我认为
线程工作
来自MSDN上的一些示例代码,例如在本页-@ChrisF:是的-我的观点是,很难说出代码实际应该是什么,因为我们不知道OP的新线程打算做什么。jon,事实上,你输入的速度是多少?哇-我认为这只是一个发布代码片段的问题:)