Wie zu verwenden Aufgabe.Ausführen(Aktion<T>)

Ich bin versucht, erstellen Sie eine Methode, die akzeptiert TcpClient-verbindungen und eine Aufgabe erfüllt, sobald ein client verbunden ist, "ConnectedAction". Ich bekomme einen kompilieren Fehler beim Versuch, eine neue Aufgabe erstellt und führt den Delegaten "ConnectedAction".

Argument 1: cannot convert from 'void' zu 'System.Func'

Ich glaube, dass dieser Fehler, weil die Methode versuchen, die "ConnectedAction" - Methode und "void" zurückgeben, um die Aufgabe.Run parameter.

Wie kann ich die Aufgabe haben, führen Sie die "ConnectedAction" delegieren?

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));
        }
    }
}
InformationsquelleAutor James Harmon | 2013-02-20
Schreibe einen Kommentar