0

我们有一个 WPF(也适用于 Windows 窗体)应用程序,并且对于某些功能,我们依赖于其他团队。我正在寻找一种在不影响我们主应用程序稳定性的情况下执行其他团队功能的最佳方法。

其他团队的功能将包括一些 GUI,它们可能会调用其他一些服务/数据库等。我们担心的是在 UI 线程上执行其他团队的功能,因为我们不确定他们的编码标准,比如他们是否遵循适当的技术执行服务时的后台线程。我们有能力根据我们的选择向他们推荐 API 设计。我正在考虑以下两个选项

  1. API 将异步调用,但会将调度程序作为输入。对传递调度员不是很有信心

  2. 为服务/GUI 方法提供明确的 API,以便我们可以在后台线程上调用服务并在完成时将模型传递给 GUI。但这将涉及我们方面的更多工作。

或者在执行其他团队代码时处理我们的应用程序的稳定性时有更好的方法来处理。

4

1 回答 1

2

选项 3:

向他们传递一个Action<Action>名为“UIThreadInvoker”或其他可以存储在静态引用中的东西,并在每次他们需要在 UI 线程上完成某些事情时使用它:

你的一方:

//App_Startup or somewhere during initialization
TheirApi.UIThreadInvoker = x => Dispatcher.BeginInvoke(x);

他们的一面:

  public class TheirAPI
   {
       public static Action<Action> UIThreadInvoker {get;set;}

       public void SomeMethod()
       {
           //Pass SomeOtherMethod() to the UIThreadInvoker
           UIThreadInvoker(SomeOtherMethod);
       }

       public void SomeOtherMethod()
       {
           //this will be executed by your dispatcher
       }
   }
于 2013-05-03T16:53:30.417 回答