猿问

禁止在WPF代码中使用Dispatcher.Invoke

我天生就是一个网络和后端程序员。通常我会尝试使Windows程序无效。现在,我必须成为WPF客户。


我有一个后台任务,每一次都会引发一个事件。(它像轮询程序一样工作,并且当满足条件时会引发事件)。作为我的菜鸟,我编写了此事件附带的代码以更新UI。


    private void IsDisconnectedEvent()

    {

            UserWindow.Visibility = Visibility.Hidden;

            DisconnectWindow.Visibility = Visibility.Visible;

    }

这给出了一个例外,因为我不在同一线程上。经过一番谷歌搜索后,我发现我应该使用以下代码:


    private void IsDisconnectedEvent()

    {

        Dispatcher.Invoke(() =>

                          {

                              UserWindow.Visibility = Visibility.Hidden;

                              DisconnectWindow.Visibility = Visibility.Visible;

                          });

    }

这行得通,但这不是唯一的事件,因此使我的代码很难看。有更好的方法可以做到这一点吗?


慕无忌1623718
浏览 893回答 3
3回答
随时随地看视频慕课网APP
我要回答