2017-03-03 1 views
-1

に機能の実行を遅延する方法、私はいくつかの時間のための方法の実行を遅延する必要があります。そのために私はSystem.Windows.Forms.Timerを使用しました。は私のアプリケーションでは、C#

私はタイマーを初期化し、開始するには、以下のコードを使用しています。

Timer.Tickイベントでは、以下のように遅延させるべきメソッドを呼び出しました。

private void Timer_Tick(object sender, EventArgs e) 
    { 
     DoSomethingElse(); 
     timer.Stop(); 
    } 

これは完全に機能します。

しかし、私は実行を遅らせるための正確な方法であるかどうかわかりません。

これを達成するために、他の効率的な方法はありますか?

ご意見をお寄せください。前もって感謝します。

+0

いくつかのコードの実行を遅延させる方法はたくさんあります。あなたが提供していない文脈に応じて最適です。マークされた複製は、(Thread.Sleep()での)スレッドのブロックと(例えば.NETのいくつかのタイマークラスのうちの1つとの)非同期シグナリング/コールバックの何らかの形式の比較に関するいくつかの洞察を提供するでしょう。重複していない現代のC#イディオムは、 'async'メソッドと' await Task.Delay(...) 'を使うことでしょう。 –

+0

も参照してください。 https://stackoverflow.com/questions/4705535/how-to-delay-program-for-a-certain-number-of-milliseconds-or-until-a-key-is-preおよびhttps:// stackoverflow。 com/questions/10963465/how-to-call-a-method-after-so-many-seconds –

答えて

0

Task.Delayを使用してみてください。これは次のように使用できます:

Task.Delay(1000).Wait(); 
DoSomething(); 

希望すると助かります!

+0

ご意見ありがとうございます。なぜこれをTimer.Tickより優れているのか説明できますか? –

+0

連続して実行したいコードブロックまたはメソッドがある場合(つまり、5秒ごとにメソッドを実行する)、Timerを使用することをお勧めします。しかし、一度だけ何かを遅らせる必要がある場合は、Task.Delayを使うことをお勧めします。 Timerとは異なり、セットアップは不要です。 – mindOfAi

+0

ユーザーが任意のキーを押したときにこのメソッドを呼び出す必要があります。そのため、ユーザーがキーを押すたびに、メソッドは短い遅延で呼び出される必要があります。 –

0

あなたはそれをやっているように、タスクを開始して遅延させることができます。あなたのUIスレッドでコールバックを取得します。そうすれば、Windowsフォームと対話できます。

0

は、.NET 4.0でのThread.sleep()を使用することができます。しかし、現在のスレッドをブロックします。

+0

あなたの提案に感謝します。私はそれを試してみます。 –

+0

System.Threading.Timerの使用はどうですか?あなたのアイデアを共有できますか? –

+0

メソッドコールを遅延させたいので、タイマーは必要ありません。タイマーは、指定された間隔でタスクを実行する場合に使用できます。 – Sudharsan

関連する問題