Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 线程开始引用错误_C#_Multithreading_Asynchronous - Fatal编程技术网

C# 线程开始引用错误

C# 线程开始引用错误,c#,multithreading,asynchronous,C#,Multithreading,Asynchronous,在遵循一些创建线程的基本代码之后,我遇到了一个问题 我在threadstart上使用了一个回调方法,但是我得到了一个错误 非静态字段、方法或属性“Program.ServerUDP”需要对象引用 在这上面,(服务器udp) 两者都包含在同一类中,程序 我是不是漏掉了什么明显的东西?我查找的所有代码基本上都是这样运行的,我甚至尝试将线程的声明从main中移出并作为类的属性,但这是同一个问题。ServerUDP应该被设置为静态方法只有指定/使用服务器类的实例,才能访问该方法。因此,如果它不使用任何对

在遵循一些创建线程的基本代码之后,我遇到了一个问题

我在threadstart上使用了一个回调方法,但是我得到了一个错误

非静态字段、方法或属性“Program.ServerUDP”需要对象引用

在这上面,(服务器udp)

两者都包含在同一类中,程序


我是不是漏掉了什么明显的东西?我查找的所有代码基本上都是这样运行的,我甚至尝试将线程的声明从main中移出并作为类的属性,但这是同一个问题。

ServerUDP应该被设置为静态方法

只有指定/使用
服务器
类的实例,才能访问该方法。因此,如果它不使用任何
对象
特定的东西,您可以将该方法设置为静态。指定了
Server.UDP
,这表示只使用
newserver().UDP()

不管怎样,当你修复它时,你也必须这样写:

new ThreadStart(() => ServerUDP());

你只能在静态方法中访问静态方法这是有效的,奇怪的是,没有任何示例或教程说明这是一个需要的静态方法,我甚至在一本书的教程中工作。如果你仔细想想,这是非常直接的。静态方法对对象实例一无所知。因为它没有引用任何。我尝试使用this.ServerUDP,但它不起作用。我不知道程序运行时会发生什么,但我希望内部带有main的类会自动创建一个实例,不是这样吗?
new ThreadStart(() => ServerUDP());