使用计时器暂停线程而不中断其他线程生成的UI事件

时间:2012-04-02 18:52:37

标签: c# timer

我正在研究这个,并且对如何尽可能干净地执行它感到困惑。我的想法是,在继续使用逻辑之前,我有一个线程暂停指定的秒数,同时让其他线程与UI一起运行。

据我所知,但它不起作用并引发错误:

    public static int f_sleep(int time)
    {
        /*
        System.DateTime now = System.DateTime.Now;
        System.TimeSpan duration = new System.TimeSpan(0, 0, 0, time);
        System.DateTime then = now.Add(duration);

        while (then > DateTime.Now)
        {
            Application.DoEvents();
            Thread.Sleep(10);
        }

        while (session.automation_lock == true)
        {
            Thread.Sleep(6000);
        }

        if (session.automation_stop == true)
        {
            Thread.CurrentThread.Abort();
        }

        GC.Collect();
        GC.WaitForPendingFinalizers();
        */

        System.Threading.Timer timer = new System.Threading.Timer(o => f_sleep_timer_tick(timer), null, time, -1);
        timer.start();
        return 1;

    }

    public static void f_sleep_timer_tick(System.Threading.Timer timer)
    {
        timer.Stop();
    }

注意我已经注释了我处理休息的旧方法,因为我认为它导致了挂断。你怎么看待我的旧方式?此外,您可以看到我正在尝试定义计时器,并将其发送到tick方法,因此我不必定义全局计时器。但我知道我做错了。我只想让计时器勾选一次(刻度为x秒),然后通过f_sleep继续执行线程逻辑,返回1告诉线程的逻辑,现在可以继续。

0 个答案:

没有答案