Comment utiliser les groupes de travail.Exécuter(Action<T>)

Je suis de la tentative de créer une méthode qui accepte TcpClient connexions et effectue une tâche une fois qu'un client est connecté, "ConnectedAction". Je reçois une erreur de compilation quand on cherche à avoir une nouvelle tâche créée pour exécuter le délégué "ConnectedAction".

Argument 1: impossible de convertir de 'vide' pour 'Système.Func'

Je crois que cette erreur est parce que la méthode est d'essayer d'exécuter la "ConnectedAction" méthode et de retour void à la Tâche.Paramètre d'exécution.

Comment puis-je avoir de l'exécution d'une Tâche de la "ConnectedAction" délégué?

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));
        }
    }
}

OriginalL'auteur James Harmon | 2013-02-20