0

私は、WMI を介してサーバーのステータスを照会するアプリケーションに取り組んでいます。このアプリケーションを自動的に繰り返し実行し、クエリをキューに入れ、複数のサーバーのステータスを頻繁に取得できるようにするよう求められました。私が抱えている問題は、最初のタイマーが作成されたときに確立された値が、2番目のタイマーが作成されるまでに変更されていることです(サーバー名やクエリタイプなど)。これはコードの一部です:

public System.Threading.Timer[] schedquery = new System.Threading.Timer[10];
private void button1_Click(object sender, EventArgs e)
    {
        schedquery[C3MonitorApp.globalVars.tmrArray] = new System.Threading.Timer(writeLog);
        schedValues.schedTurns = 120 / schedValues.schedTimer;
        schedquery[C3MonitorApp.globalVars.tmrArray].Change(1000, 0);
        C3MonitorApp.globalVars.tmrArray++;
    }

    public void writeLog(object state)
    {
        //do queries and write results to file then check if the timer
        //has done certain amount of loops and dispose or restart
        schedValues.schedTurnCounter++;
        if (schedValues.schedTurnCounter == schedValues.schedTurns)
        {
            this.Dispose();
        }
        else
        {

            System.Threading.Timer t = (System.Threading.Timer)state;
            t.Change(1000 * 60 * schedValues.schedTimer, 0);

        }
    }

書き込みログ関数は、パブリック クラスからサーバー名とクエリ タイプを取得するため、サーバー名などのこの値を何らかの形で保存して、タイマーが 2 番目、3 番目、または4番目のタイマー。

よろしく。

4

1 に答える 1