第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 UI 繁忙時忽略用戶輸入

在 UI 繁忙時忽略用戶輸入

C#
拉風的咖菲貓 2022-08-20 16:44:21
我將通過在示例應(yīng)用程序中使用兩個按鈕來模擬我的問題。在我的實際案例中,我有一個用戶控件和一個選項卡控件。當按下用戶控件上的按鈕時,我正在嘗試獲取父窗口并禁用它,并在UI上執(zhí)行一些工作1分鐘。UI可用后,我將啟用父窗口。我的問題是,當父窗口被禁用并且當用戶單擊選項卡控件時,只要UI繁忙,它就不會無響應(yīng)。但是,一旦 UI 完成其工作,所有用戶輸入都會被考慮在內(nèi),并且它會自行切換選項卡。我想在UI繁忙時忽略用戶輸入,請幫忙。有什么建議嗎?在示例應(yīng)用程序中,此處是 xaml<StackPanel Orientation="Vertical">        <Button Height="20" Width="180" Click="Button_Click"                >Hello</Button>        <Button Height="20" Width="180" Click="Button_Click_1">Do Nothing</Button>    </StackPanel>在 xaml.cs 文件中,此處是代碼。看到我正在禁用窗口,但是當按下按鈕時,我在UI免費后自動收到hello消息。private void Button_Click(object sender, RoutedEventArgs e)        {            MessageBox.Show("Hello");        }        private void Button_Click_1(object sender, RoutedEventArgs e)        {            Window.GetWindow(this).IsEnabled=false;            Thread.Sleep(5000);            Window.GetWindow(this).IsEnabled=true;        }
查看完整描述

1 回答

?
米琪卡哇伊

TA貢獻1998條經(jīng)驗 獲得超6個贊

只需在新線程中運行長時間運行的代碼


    private void Button_Click_1(object sender, RoutedEventArgs e)

    {

        Task.Run(() =>

        {

            try

            {

                this.Dispatcher.Invoke(() =>

                {

                    Window.GetWindow(this).IsEnabled = false;

                });

                Thread.Sleep(5000);

            }

            finally

            {

                this.Dispatcher.Invoke(() =>

                {

                    Window.GetWindow(this).IsEnabled = true;

                });

            }

        });

    }

預(yù)期結(jié)果

https://i.stack.imgur.com/dgRSm.gif


查看完整回答
反對 回復(fù) 2022-08-20
  • 1 回答
  • 0 關(guān)注
  • 81 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號