我正在研究这个,并且对如何尽可能干净地执行它感到困惑。我的想法是,在继续使用逻辑之前,我有一个线程暂停指定的秒数,同时让其他线程与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告诉线程的逻辑,现在可以继续。