在运行函数之前和之后更改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正在运行,但实际上窗口一直是启用的,只是在结束时它切换到禁用,在显示警报之前很短的时间。你知道为什么吗?

致以最亲切的问候!

在运行函数之前和之后更改WPF属性

这是因为UI冻结(由于您正在调用的长时间运行的任务)可以呈现为禁用之前。在。net 2.0/3.5中,实现预期行为的最佳方式是使用BackgroundWorker。

  1. 在它的DoWork事件中(在单独的线程上执行)应该运行长时间运行的任务。
  2. 在它的RunWorkerCompleted事件(在UI线程上执行)中,你应该使窗口。
  3. 在按钮点击事件中,按以下方式运行BackgroundWorker:

    Window_Abfrage。IsEnabled = false;
    backgroundWorker.RunWorkerAsync ();