关于线程的问题.睡在后台工作人员里面



据我所知,.Net中的后台工作程序运行在与GUI不同的威胁上。不建议使用Thread.Sleep,因为它会冻结GUI。

现在,如果在后台工作人员的DoWork中使用Thread.Sleep,GUI会冻结还是这次Sleep只休眠BW的线程?是否仍然不推荐?

(我试着在DoWork by Thread中暂停1秒。Sleep(1000(似乎不会干扰GUI。有没有其他方法可以在BW中暂停而不是Thread.Sleep?等待任务需要BW不是的同步方法:((

现在,如果在后台工作人员的DoWork中使用Thread.Sleep,GUI会冻结还是这次Sleep只会休眠BW的线程?

Thread.Sleep与所有其他方法一样,在当前线程上运行。因此Thread.Sleep导致当前线程休眠。如果它是从BGW的DoWork调用的,那么它将导致BGW的线程休眠。

有没有其他方法可以在BW而不是Thread.Sleep中暂停?

否,但您可以将BackgroundWorker完全替换为Task.Run,然后您可以使用await Task.Delay而不是Thread.Sleep

最新更新