为了账号安全,请及时绑定邮箱和手机立即绑定

在 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 关注
  • 549 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信