1

ここで、ServerStateReceivedイベントがあり、4台のサーバーの状態がUPかDownかをチェックしています。この特定のタイプのシナリオでは、サーバーは最初はダウンしますが、しばらくするとサーバーがアップするはずです。したがって、4つのサーバーすべてがダウンし、ReadySent=trueです。調べる必要があるまれなケースです。 このメソッドにはpublicwrite()メソッドがあり、フラグReadySent=trueの場合に条件をチェックするロジックが必要です。そして、すべてのサーバーは、イベントServerStateReceivedでダウンしています。満足のいく制御がイベントServerStateReceivedに移動する必要がある場合。ここでしばらく待つと、4つのサーバーすべてが稼働し、その間にServerStateReceivedイベントからwrite()への制御のみが行われます。sleep ()メソッドやサスペンドなどを使用したくない、ロジックが必要ですここにコードを介して

これは、これがc#コードではないためのアルゴリズムです

Write()
{
If(ReadySent = true && all servers  in the event EventHandler ServerStateReceived DOWN) 
Go to 
              public event EventHandler ServerStateReceived
              {
here checks going on 
if(all servers UP)
go to write() method
}
}

上記のロジックを実装する必要があるc#コードは次のとおりです

Public write()
{
// here need the logic to move control to event ServerStateReceived if both flag ReadySent = true; and all servers DOWN stay there for some time without using sleep() once they all UP program control will come to write() method
}

private enum StateType : int
              {
                 Initial = 0,
                 Up = 1,
                 Down = 2
              }
              public event EventHandler ServerStateReceived
              {
              add
                 {
                    m_events.AddHandler(ServerStateEvent, value);
                                if (m_alarmServerUp == StateType.Up)
                    {
                       value(this,
                          new ServerStateEventArgs(ServerComponentType.AlarmServer, true));
                    }
                    else
                    {
                       value(this,
                          new ServerStateEventArgs(ServerComponentType.AlarmServer, false));
                    }
                   .
                   .
                   .

    // **like this 3 more conditions checking are going on(total 4)**
4

1 に答える 1

0
Public Write()
{
   System.Threading.Thread.Sleep(20000);
}

これは機能しますが、質問に投稿したアルゴリズムまたはロジックに基づいて、コードを介してこれを修正する必要があります

于 2010-08-06T13:45:14.847 に答える