ここで、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)**