2

私が開発している VSTO アドインでは、特定の遅延でメソッドを実行する必要があります。注意が必要なのは、メソッドの実行に 0.1 秒から 1 秒かかる場合があることです。私は現在、次のSystem.Timers.Timerようなものを使用しています:

    private Timer tmrRecalc = new Timer();

    // tmrRecalc.Interval = 500 milliseconds

    private void tmrRecalc_Elapsed(object sender, System.Timers.ElapsedEventArgs e){

        // stop the timer, do the task
        tmrRecalc.Stop();           
        Calc.recalcAll();
        
        // restart the timer to repeat after 500 ms
        tmrRecalc.Start();
    }

これは基本的に開始し、1 つの経過イベントを発生させた後、任意の長さのタスクが実行されるために停止します。しかし、UI スレッドは、各タスクの間に 3 ~ 5 秒間ハングアップするようです。

タイマーには、開始するための「ウォームアップ」時間がありますか? 最初の (そして最後の) 経過に時間がかかるのはそのためですか?

代わりにどのタイプのタイマーを使用しますか?

4

2 に答える 2