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,事实上,你输入的速度是多少?哇-我认为这只是一个发布代码片段的问题:)