亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

在 WPF 應用程序中調用 Application.Current.Dispatcher

在 WPF 應用程序中調用 Application.Current.Dispatcher

C#
MM們 2022-12-31 13:40:11
我有一個類似于這個問題的問題。但在我的例子中,它不是 BeginIvnoke 方法,而是 Invoke 方法。我需要將我的代碼包裝在 try-catch 語句中,但不確定具體放在哪里。這是我的代碼:private void UpdateUI(){    Application.Current.Dispatcher.Invoke(() =>    {        if (SecurityComponent.CurrentLoggedUser != null)        {            var user = SecurityComponent.CurrentLoggedUser;                m_userLabel.Text = user.Username + " - " + user.Role.Name;        }                        UpdateTerritories();        ViewsIntegrationService.SetHmiMode(EHmiModes.Normal);    });}
查看完整描述

1 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

您可以通過在傳遞給方法的操作中添加 try/catch 語句來捕獲 UI 線程上的異常Invoke:


private void UpdateUI()

{

    Application.Current.Dispatcher.Invoke(() =>

    {

        try

        {

            if (SecurityComponent.CurrentLoggedUser != null)

            {

                var user = SecurityComponent.CurrentLoggedUser;

                m_userLabel.Text = user.Username + " - " + user.Role.Name;

            }

            UpdateTerritories();

            ViewsIntegrationService.SetHmiMode(EHmiModes.Normal);

        }

        catch (Exception ex)

        {

            MessageBox.Show("Error: " + ex.Message);

        }

    });

}

如果將 try/catch 放在對Invoke方法的調用周圍,則可以在后臺線程上處理異常。將它放在可能實際拋出的實際代碼周圍更有意義。


查看完整回答
反對 回復 2022-12-31
  • 1 回答
  • 0 關注
  • 659 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號