Próbuję utworzyć metodę, która akceptuje połączenia TcpClient i wykonuje zadanie po podłączeniu klienta, "ConnectedAction". Otrzymuję błąd kompilacji podczas próby utworzenia nowego zadania do uruchomienia delegata "ConnectedAction".Jak używać Task.Run (Działanie <T>)
Argument 1: nie można przekonwertować z „void” do „System.Func”
wierzę, że ten błąd jest, ponieważ metoda próbuje uruchomić „ConnectedAction” metody i powrócić do pustki Parametr Task.Run.
Jak mam zadanie uruchomić delegata "ConnectedAction"?
class Listener
{
public IPEndPoint ListenerEndPoint {get; private set;}
public int TotalAttemptedConnections { get; private set; }
public Action<TcpClient> ConnectedAction { get; private set; }
public Listener(IPEndPoint listenerEndPoint, Action<TcpClient> connectedAction)
{
ConnectedAction = connectedAction;
ListenerEndPoint = listenerEndPoint;
Task.Factory.StartNew(Listen, TaskCreationOptions.LongRunning);
}
private void Listen()
{
TcpListener tcpListener = new TcpListener(ListenerEndPoint);
tcpListener.Start();
while (true)
{
TcpClient tcpClient = tcpListener.AcceptTcpClient();
TotalAttemptedConnections++;
//Error here
Task.Run(ConnectedAction(tcpClient));
}
}
}
Dokładnie tego, czego szukałem. Dzięki! –