我有一种情况,我需要在 textbox1 中打印一些东西,然后等待一秒钟,使图像可见,然后再次等待一秒钟,然后单击一个按钮在 textbox2 中打印一些东西。当我在按钮的 Click 事件中在 textbox1 中打印后写了一个睡眠。我看到 UI 上的打印是一次完成的,即我希望它在暂停的情况下一个接一个地按顺序完成,但由于它是一个事件句柄,它一直等到结束并一次全部显示在 UI 上到底。
问问题
706 次
2 回答
0
我不知道它是否像 Windows phone 8 一样工作,但你可以“睡觉”使方法异步并调用
await Task.Delay(1000);
public async void myMethod(){
printString1();
await Task.Delay(1000);
showImage();
await Task.Delay(1000);
printString2();
}
于 2013-03-26T14:48:41.003 回答
0
您可以将代码放在一个线程中,并在需要更新 UI 时使用调度程序:
private void Process()
{
this.Dispatcher.BeginInvoke(() => this.TextBox1.Text = "Hello");
Thread.Sleep(1000);
this.Dispatcher.BeginInvoke(() => this.Picture1.Visibility = Visibility.Visible);
Thread.Sleep(1000);
this.Dispatcher.BeginInvoke(() => this.TextBox2.Text = "World");
}
然后,启动线程(当用户单击按钮时):
var thread = new Thread(this.Process);
thread.Start();
于 2013-03-26T15:58:35.037 回答