您需要将该行更改为以下内容:
Thread clsUDPThread = new Thread(new ThreadStart(delegate() { clsUDP.UDPListen(64000, typeof(ServerClass)); }));
虽然仅接受类型并不能解决您的问题 - 您需要实际接受该类型的实例(对象)(假设您想调用实例方法/属性)。更好的方法是接受一个您的目标类型必须实现的接口。
编辑:
好的 - 这里是如何使用接口。
public interface IUDPListener
{
void Notify(string status);
}
在UDP类中,
public void UDPListen(int UDPPort, IUDPListener listner)
{
...
listener.Notify("bla bla");
...
}
public class ServerClass : IUDPListener
{
...
public void Notify(string status)
{
...
}
public void StartThread()
{
UDPClass clsUDP = new UDPClass();
Thread clsUDPThread = new Thread(new ThreadStart(delegate() { clsUDP.UDPListen(64000, this); }));
clsUDPThread.Start();
}
}
如果只是一个简单的回调方法,您也可以使用委托来进行此类通知。使用接口,您可以定义多个回调以及查询侦听器(listener)所需的方法/属性。以下是使用委托的示例代码:
在UDP类中,
public void UDPListen(int UDPPort, Action<string> callback)
{
...
callback("bla bla");
...
}
在服务器类中。
public class ServerClass
{
...
private void UdpCallback(string message)
{
...
}
UDPClass clsUDP = new UDPClass();
var clsUDPThread = new Thread(new ThreadStart(delegate() {clsUDP.UDPListen(64000, UdpCallback); }));
clsUDPThread.Start();