Silverlight 3で非同期ソケットパターンを使用してタスクを実装しました。MichaelSchwarzの実装から始めて、その上に構築しました。つまり、基本的に、私のSilverlightアプリはデバイスへの永続的なソケット接続を確立し、データは必要に応じてデバイスとSilverlightアプリの間で双方向に流れます。
私が苦労していることの1つは、切断を検出する方法です。私は2つのアプローチを考えることができます:
生き続ける。これはSocketsレベルで実行できることは知っていますが、非同期モデルでこれを実行する方法がわかりません。Socketクラスは、切断が発生したことをどのように通知しますか。
手動で生き続ける。基本的に、Silverlightアプリに20秒程度ごとにダミーパケットを送信させています。それが失敗した場合、私は切断を想定します。ただし、信じられないことに、Silverlightアプリが接続されているデバイスのプラグを抜いただけでも、SocketAsyncEventArgs.SocketErrorは常に成功を報告します。これがバグなのか、それともSL4にアップグレードする必要があるのかわかりません。
任意のアイデア、方向性または実装をいただければ幸いです。