1

とりあえず持ってる

    if blocker then 
        Thread.Sleep(5000)
        do something

while サークルで実行されているため、アプリケーション全体がフリーズしています。メインアプリケーションスレッドで何かをすることも重要なので、新しいものを作成しません。

一時タイマーを作成し、経過イベントを追加し、それを処理してから何かをする必要があると思いますが、それに対する簡単な解決策があり、「自転車を再発明する」必要がないかどうかを知りたいだけですか?

4

3 に答える 3

2

私はこのようなことをします:

    private static Timer _timer;

    static void Main(string[] args)
    {
        _timer = new Timer();
        _timer.Elapsed += TimeEvent;
        _timer.Interval = 5000; 
        _timer.Start(); 

        while (Console.Read() != 'q')
        {
            ;     
        }
    }

    public static void TimeEvent(object source, ElapsedEventArgs e)
    {
        Console.Write("Time event!");
        _timer.Stop();
    }
于 2012-07-25T10:12:57.953 に答える
1

車輪を再発明する必要はありません。

// create a timer that waits 10 seconds and start it
Timer timer = new Timer(10 * 1000);
timer.Elapsed += this.TimerElapsed;
timer.Start(); 

public void TimerElapsed(object o, ElapsedEventArgs args)
{
    MessageBox.Show("Timer has elapsed");  
}
于 2012-07-25T10:15:16.790 に答える
0

問題を渡すことができるクラスを作成できます。そして、スレッドを介してそのメソッドを呼び出します。そのクラスではイベントを作成できるため、クラスがジョブを終了するとイベントが発生し、アプリはジョブが完了したことを認識します。

于 2012-07-25T10:09:50.023 に答える