3

TcpClient 非同期接続のステータスを取得する方法はありますか? 次のコードを使用して、Connected プロパティを使用してクライアントのステータスを取得するにはどうすればよいですか? リモート接続を非同期で確立しようとしましたが、同時に 5 秒以上待機しませんでした ...

TcpClient client = new TcpClient();

Task tsk = Task.Factory.StartNew(() =>
{
   client.ConnectAsync(host, port);

   // client.Connect   (this is always false)
});

tsk.Wait(5000);

// client.Connect   (or if I use it here, this is always false)
4

2 に答える 2

10

Taskまず、独自の新しいものを作成しないでください。これはバグです。すでに接続試行を表すConnectAsynca を返しています。Task

var tsk = client.ConnectAsync(host, port);
tsk.Wait(5000);

待機が戻ったら、IsCompletedタスクのプロパティを確認します。接続が確立さtrueれた場合に限ります。

于 2013-08-28T12:11:34.550 に答える