1

以下の方法を教えていただきたいです。

次のようなコンソール アプリケーションがあります。

Data data;

while(true)
{
   // use data for calculations

   if (Timer())
   {
      data = RefreshData();
   }
}

Timer()最後の呼び出しからの経過時間が、実行にかかった時間に5 分を加えた時間に等しい場合、 trueを返します。RefreshData()RefreshData()

同じ周期で実行したいのですRefreshData()が、非同期で実行したいのですが、whileループで現在のデータの値を使用し、RefreshData()完了時に新しい値に置き換えます。

4

3 に答える 3

2

私はあなたに次のように考えることを提案します:

Timer timer;

public void StartTimer()
{
    timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
    // Set the Interval 
    timer.Interval = 2000;
    timer.Enabled = true;
}

private void OnTimedEvent(object source, ElapsedEventArgs e)
{
    data = RefreshData();
}

指定した間隔で非同期にデータを更新します。

それが助けになることを願っています

于 2013-07-09T06:42:30.127 に答える