在运行函数之前和之后更改WPF属性
本文关键字:WPF 属性 之后 运行 函数 | 更新日期: 2023-09-27 18:02:01
运行此代码:
Window_Abfrage.IsEnabled = false;
Alert(Cloud.UserExists(new Cloud.User(TextBox_Cloud_User_UserName.Text)).ToString()); // unimportant for the problem; just a function causing a few seconds of time
Window_Abfrage.IsEnabled = true;
不能按我想要的方式工作。这个想法是,窗口被禁用,而功能云。UserExists正在运行,但实际上窗口一直是启用的,只是在结束时它切换到禁用,在显示警报之前很短的时间。你知道为什么吗?
致以最亲切的问候!
这是因为UI冻结(由于您正在调用的长时间运行的任务)在可以呈现为禁用之前。在。net 2.0/3.5中,实现预期行为的最佳方式是使用BackgroundWorker。
- 在它的
DoWork
事件中(在单独的线程上执行)应该运行长时间运行的任务。 - 在它的
RunWorkerCompleted
事件(在UI线程上执行)中,你应该使窗口。 -
在按钮点击事件中,按以下方式运行
BackgroundWorker
:Window_Abfrage。IsEnabled = false;
backgroundWorker.RunWorkerAsync ();