0

質問は、作成された各スレッドでのタイマーの使用に関するものです。

30 秒ごとに PC から CPU データを収集するアプリケーションを作成しています。スレッドなしで、1 台の PC からのみ 1 つのタイマーを使用してデータを収集すると機能します。今、2 台の PC から同時にデータを収集したいと考えています。この目的のために、各スレッドが各 PC で機能し、独自のタイマーを持つスレッドを使用することにしました。したがって、2 台の PC に対して 2 つのタイマーを備えた 2 つのスレッド。System.Windows.Threading.DispatcherTimer を使用して、スレッドごとにタイマーを作成します。しかし、問題は、作成されたタイマーが動作を開始しない (つまり、timerTick を呼び出さない) ことです。したがって、スレッドなしでタイマーを作成すると、正しく機能しますが、スレッドで作成されたタイマーは機能しません。:(

おそらく、考えられている解決策は正しくなく、いくつかの変更が必要です。問題を理解するのを手伝ってください。

コードの簡単なバージョンを次に示します。

void CreateThread()
{
    Thread First = new Thread(new ThreadStart(FirstThreadWork));
    First.Start();
}

private void FirstThreadWork()
{
    System.Windows.Threading.DispatcherTimer timer;

    timer = new System.Windows.Threading.DispatcherTimer();

    timer.Tick += new EventHandler(timerTick);
    timer.Interval = new TimeSpan(0, 0, 30);
    timer.Start();
}

private void timerTick(object sender, EventArgs e)
{
    MessageBox.Show("Show some data");
}
4

1 に答える 1