Tau*_*lax 3 c# visual-studio-2013
我的问题很简单:
label1.Text = "Start";
Thread.Sleep(2000);
label1.Text = "Finish";
Run Code Online (Sandbox Code Playgroud)
为什么Sleep()在标签变为"Start"之前发生?
如何更改标签,然后睡眠,然后再次更改?
睡眠发生在正确的位置,问题是你缺少第四步.真正发生的是
label1.Text = "Start";
Thread.Sleep(2000);
label1.Text = "Finish";
DrawUpdatedValuesOfLabel1OnTheUI();
Run Code Online (Sandbox Code Playgroud)
在执行返回"消息循环"之前,UI不会更新,您需要在等待两秒钟时将控制权返回到消息循环,以便获得更新的UI.
如果您使用的是.NET 4.5,最简单的方法是使用async/await 将您更改Sleep为aDelay
public async Task YourFunction()
{
label1.Text = "Start";
await Task.Delay(2000);
label1.Text = "Finish";
}
Run Code Online (Sandbox Code Playgroud)
如果您不使用.NET 4.5,则问题变得复杂得多.
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |