代码之家  ›  专栏  ›  技术社区  ›  Matt Briggs

WPF:如何处理后台工作人员的错误

  •  2
  • Matt Briggs  · 技术社区  · 15 年前

    说到windows客户端编程,我有点新手。我有一个后台工作程序,它连接了一个DoWork事件和一个RunCompleted事件。如果在DoWork中抛出异常,我想对我的UI进行更改,但是,我不能,因为它位于不同的线程中。我可以将错误告知RunCompleted,但这对我也没有帮助。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Scott Wisniewski    15 年前

    呼叫Dispatcher.BeginInvoke。基本上,您需要这样的代码:

    void UpdateState(WhatEverType someObject)
    {
        if (! Dispatcher.CheckAccess())
        {
            Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(()=>UpdateState(someObject));
        }
        else
        {
            //make the UI changes here.
        }
    }