我目前正在使用Thread.Sleep(2500)来模拟模拟层中的网络调用,直到我们可以连接到Web服务。我基于this example创建了一个带有进度条的弹出窗口(是的,我使用的是Jeff Wilcox的进度条),并且弹出窗口已成功显示。但是,我遇到一个问题,当我在使用Thread.Sleep()之后调用它时,弹出窗口没有加载。直到Thread.Sleep()返回后才会出现进度条。我正在努力让这个工作用于即将到来的演示,所以我想弄清楚如何使用Thread.Sleep()而不是等待服务并希望它在那里工作。
答案 0 :(得分:4)
您的Thread.Sleep
正在暂停UI线程,这会阻止弹出窗口显示,直到您的方法返回为止。您需要可以使用DispatcherTimer
类在经过一些TimeSpan
之后在UI线程上回调,或者创建一个执行睡眠的新线程。
当您进行网络操作时,这是一个很好的教训:不要阻止UI线程。