C# 在WPF窗口中更改文本
我使用WPF窗口,没有任何任务或委派 我只是搭建了一个小窗口,上面写着: 正在更新,请稍候 然后开始复制一些文件 最后应说明: 更新完成,祝您有愉快的一天 开始时,文本有所不同,这取决于一些初始因素。除了文本的变化,一切都很顺利 提醒一下:我没有任务之类的。一切都像在一个好的旧结构化编程技术中一样完成 但是当我做一些类似的事情时:C# 在WPF窗口中更改文本,c#,wpf,C#,Wpf,我使用WPF窗口,没有任何任务或委派 我只是搭建了一个小窗口,上面写着: 正在更新,请稍候 然后开始复制一些文件 最后应说明: 更新完成,祝您有愉快的一天 开始时,文本有所不同,这取决于一些初始因素。除了文本的变化,一切都很顺利 提醒一下:我没有任务之类的。一切都像在一个好的旧结构化编程技术中一样完成 但是当我做一些类似的事情时: CopyText.Text = "Please wait, files will be copied!"; 我没有零钱。即使我这样写: Dispatcher.Inv
CopyText.Text = "Please wait, files will be copied!";
我没有零钱。即使我这样写:
Dispatcher.Invoke(delegate
{
CopyText.Text = "Please wait, files will be copied!";
});
我在窗口里找不到零钱。不知怎的,我觉得我错了
有人知道我做错了什么吗?你更可能陷入一个流行的陷阱:在一个循环中完成所有工作(
而?)。这意味着,什么文本将不会得到更新,直到你们完成你们的工作,然后UI才有机会重新绘制。解决方案很简单:将作业放入另一个线程(thread
/Task
/BackgroundWorker
)或将作业拆分为多个部分,然后使用计时器一切都像在一个好的旧结构化编程技术中一样完成。
但没有MVVM?查找数据绑定和MVVMU是否在UI线程上复制文件(并阻止它)?良好的旧结构化编程技术
不允许在处理其他事情时更新UI线程。为什么?因为它需要在重新绘制视图之前完成其工作。由于视图无法刷新,您将看到旧的好的
没有响应的场景。有人知道我可能做错了什么吗?是的,您正在尝试使用WPF,就像它是WinForms或另一种优秀的旧结构化编程语言一样。。。但事实并非如此。学习如何正确使用它。