Sto tentando di creare un metodo che accetta connessioni TcpClient ed esegue un'attività una volta che un client è connesso, "ConnectedAction". Sto ricevendo un errore di compilazione quando provo ad avere una nuova attività creata per eseguire il delegato "ConnectedAction".Come utilizzare Task.Run (Azione <T>)
Argomento 1: non può convertire da 'vuoto' a 'System.Func'
Credo che questo errore è perché il metodo sta cercando di eseguire il metodo "ConnectedAction" e tornare al vuoto Parametro Task.Run.
Come è possibile che l'attività esegua il delegato "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));
}
}
}
Esattamente quello che stavo cercando. Grazie! –