2015-10-12 131 views
-1

我在创建线程后遵循一些基本代码后出现问题。ThreadStart参考错误

我有我使用用于在的ThreadStart回调的方法但我发现了错误,

一个对象引用是所必需的非静态字段,方法或属性“ Program.ServerUDP'

就此,(ServerUDP)。

​​3210

两者都包含在同一个类中,计划

我在这里错过了一些明显的东西吗?我查过的所有代码基本上都是这样运行的,我甚至试图将Thread的声明从主类中移出来,并作为类的一个属性,但它是同样的问题。

+1

你只能访问静态方法中的静态方法 –

回答

1

ServerUDP应为静态方法

+0

这有效,奇怪的是,没有任何示例或教程指出它是一个需要的静态,我甚至从书中的教程开始工作。 –

+0

好吧,如果你仔细想一想,那很简单。静态方法不知道任何有关对象实例的信息。因为它没有提及任何。 – kevintjuh93

+0

我试过使用this.ServerUDP,但没有奏效。 我不知道当程序运行时会发生什么,但我预计与主内部的类会自动创建一个实例,这是不是这种情况? –

0

你只能访问如果指定/使用Server类的实例方法。所以如果它不使用任何东西object特定的,你可以使该方法静态。这是很奇怪的,你有Server.UDP规定,表示在刚使用new Server().UDP();

反正你也必须把它写这样当你固定它:

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

谢谢,这也工作。 –