9
我正在嘗試創建一個方法,該方法接受TcpClient連接,並在客戶端連接後執行任務「ConnectedAction」。嘗試創建新任務以運行代理「ConnectedAction」時,我收到編譯錯誤。如何使用Task.Run(動作<T>)
參數1:不能從轉換「無效」到「System.Func」
我認爲,這個錯誤是因爲該方法試圖運行「ConnectedAction」的方法,並返回void的Task.Run參數。
我該如何讓任務運行「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));
}
}
}
正是我在找的東西。謝謝! – 2013-02-20 05:56:55