1

C#でコードを実行し、数秒待ってから続行することは可能ですか?タイマーを使用できることは知っていますが、もっと簡単で迅速な方法はありますか?バッチのように、次のことができます。

echo Hello
ping localhost -n 10 > nul
echo World
pause > nul

だから私はこれをC#で行うことができますか?Winformsに必要なので、Winformsまたはコンソールだけで動作します... [編集]一時停止するメソッドは1つだけですが、アプリの残りの部分は続行します。たとえば、ボタンがある場合はクリックし、5秒後に呼び出された残りのメソッドを続行します。それでも、それまでの間、他のボタンを押すことはできますか?

4

2 に答える 2

1

Thread.Sleepはい-希望のミリ秒数を渡して、を呼び出すことができます。実行中のコードは一時停止し、経過したミリ秒数を待ってから実行を再開します。この手法は普遍的であり、WinFormまたはコンソールアプリケーションで機能します。

Thread.SleepWinFormsでは、UIスレッドからを呼び出さないでください。代わりに、メソッドを2つに分割する必要があります-遅延の前と遅延の後に、でスレッドを生成し、Sleepコードの2番目の部分を。で呼び出しますInvoke

// This is your old method
void OnClick(object sender, EventArgs e) {
    // ... before the delay
    Thread.Sleep(1000);
    // After the delay
}

// This is your new method
void OnClick(object sender, EventArgs e) {
    // ... before the delay
    new Thread(() => {Thread.Sleep(1000); Invoke(Continuation); }).Start();
}

void Continuation() {
    // After the delay
}
于 2012-04-21T01:54:48.453 に答える
1

呼び出しを開始しますか?

new Action(() => {
    Console.WriteLine("Waiting...");
    Thread.Sleep(10000);
    Console.WriteLine("Over");
}).BeginInvoke(null, null);
于 2012-04-21T02:28:32.740 に答える