在 WPF 应用程序中调用 Application.Current.Dispatcher

我有一个类似于这个问题的问题。但在我的例子中,它不是 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);

    });

}


MM们
浏览 550回答 1
1回答

桃花长相依

您可以通过在传递给方法的操作中添加 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方法的调用周围,则可以在后台线程上处理异常。将它放在可能实际抛出的实际代码周围更有意义。
打开App,查看更多内容
随时随地看视频慕课网APP