私は、クライアントがTCP接続に接続し、それが完了するまでに多くの時間がかかる可能性のある大量の作業をトリガーするアプリケーションに取り組んでいます。ユーザーがTCP接続を切断した場合は、この作業をキャンセルする必要があります。
現在、私が行っているのは、次のようにしてネットワークストリームの接続を定期的にチェックするタイマーを起動することです。
// stream is a Stream instance
var abort = false;
using (new Timer(x => {
try
{
stream.Write(new byte[0], 0, 0);
}
catch (Exception)
{
abort = true;
}
}, null, 1000, 1000))
{
// Do expensive work here and check abort periodically
}
を読みたかったCanWrite
のCanRead
ですConnected
が、ストリームの最後のステータスが報告されます。ゼロバイトを書き込むことは接続性をテストする信頼できる方法ですか、それともこれ自体が問題を引き起こす可能性がありますか?クライアントを混乱させるため、ストリームに実際のデータを書き込んだり読み取ったりすることはできません。