我的 WPF 应用程序中有一个简单的 WPF 按钮和一个文本框(根本不使用 MVC 或绑定)。我希望能够在单击按钮后执行以下操作:
1)清除文本框
2) 创建结果
3)将结果分配给文本框
我使用了 Textbox.Clear、TextBox.Text=String.Empty、委托和调度程序方法,例如
private void button_Click(object sender, RoutedEventArgs e)
{
Application.Current.Dispatcher.BeginInvoke(new Action (ClearReportTxtBox), DispatcherPriority.Send);
System.Threading.Thread.Sleep(5000);
runTest();
}
private void ClearReportTxtBox()
{
Report_textBox.Text = string.Empty;
}
他们都没有为我正常工作。调度程序方法以某种方式工作,但不是我希望的那样。似乎清除任务将排队,当按钮单击处理程序中的所有操作完成时,它将开始发挥作用并删除文本框,但这会导致生成的报告并已分配给文本框(由 runtest 在上面的代码)也将被删除。因此,删除动作并消除整个结果为时已晚。
目前在我看来,通过单击按钮,UIthread 会阻止并获得控制权。完成按钮单击后,调度程序会将删除操作作为下一个操作排队。
是否可以在开始时强制删除,然后再做其余的?我想要达到的是我暂停按钮活动并在第一个操作时删除,然后继续按钮处理程序中的其余操作。
难道我做错了什么?
提前谢谢你的帮助。