おはようございます。 この単純なシナリオを考えてみましょう:私はNetClient
を持っています。これは、voidメソッドConnect()
を使って、リモートサーバーに接続しています。完了すると、NetClientはConnected
イベントを発生します。イベントを発生させ、イベント引数を返すvoidメソッドを同期化させます
私はこのような非同期ロジックを管理することはできません別の呼び出し側にこのNetClient
をラップする必要があります。この呼び出し側はOK(簡単にするためには、今の接続エラーについて考えていない)場合はtrueを返し同期Connect()
方法を望んでいます。
次のようなコードを見て:
public class Client
{
NetClient m_NetClient = new NetClient();
public void Connect(string ip, int port)
{
m_NetClient = new NetClient();
m_NetClient.Connected += _NetClient_Connected;
m_NetClient.Connect(ip, port);
}
private void _NetClient_Connected(object sender, EventArgs e)
{
//...
}
}
が、私はこのロジックの同期を行うために何ができますか? Monitorクラスのようなものを使うよりも、イベントハンドラの新しいスレッドを立ち上げる必要がありますか? 誰かがこの目標を達成するために自分のopionin/codeを教えてもらえますか?
ありがとうございました!
ありがとうございます。 Monitor.Wait e Monitor.Pulseを使ってみましたが、Connect()で新しいスレッドを作成していました。 私もあなたのソリューションを試してみます、ありがとう! Nando –