Вам необходимо изменить строку следующим образом:
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)
{
// Callback from thread
...
}
// Method that starts thread
public void StartThread()
{
UDPClass clsUDP = new UDPClass();
Thread clsUDPThread = new Thread(new ThreadStart(delegate() { clsUDP.UDPListen(64000, this); }));
clsUDPThread.Start();
}
}
Вы также можете использовать делегата для таких уведомлений, если это простой обратный вызов метода.С помощью интерфейса вы можете определить несколько обратных вызовов, а также методы / свойства для запроса слушателя, если это необходимо.Вот пример кода с использованием делегата
В классе UDP,
public void UDPListen(int UDPPort, Action<string> callback)
{
...
callback("bla bla");
...
}
В классе сервера
public class ServerClass
{
...
private void UdpCallback(string message)
{
...
}
// code to start thread
UDPClass clsUDP = new UDPClass();
var clsUDPThread = new Thread(new ThreadStart(delegate() {clsUDP.UDPListen(64000, UdpCallback); }));
clsUDPThread.Start();