私がやろうとしているのは、一度にいくつかの異なる Tcp ポートをリッスンし、メッセージを任意のオブザーバーにパイプする「リスナー」を作成することです。
疑似コード:
private bool _Listen = false;
public void Start()
{
_Listen = true;
Task.Factory.StartNew(() => Listen(1);
Task.Factory.StartNew(() => Listen(2);
}
public void Stop()
{
_Listen = false;
}
private async void Listen(int port)
{
var tcp = new TcpClient();
while(_Listen)
{
await tcp.ConnectAsync(ip, port);
using (/*networkStream, BinaryReader, etc*/)
{
while(_Listen)
{
//Read from binary reader and OnNext to IObservable
}
}
}
}
(簡潔にするために、2 つの while 内の try/catch を省略しました。どちらもフラグをチェックします)
私の質問は次のとおりです。フラグをロックする必要がありますか?もしそうなら、それは非同期/待機ビットとどのように結び付けられますか?