【问题标题】:How to reload form (using existing code) in a "background" thread without changing the existing code?如何在不更改现有代码的情况下在“后台”线程中重新加载表单(使用现有代码)?
【发布时间】:2013-12-01 05:21:33
【问题描述】:

我正在处理一个在启动期间加载大量联系人数据的应用程序(Win Forms / VS 2010)。效果很好。

一个新的要求是这个应用程序(我们称之为主应用程序)也可以显示一个模态对话框,并且在该对话框中用户可以查看不同联系人的数据。但是主应用程序(位于模态对话框后面)也需要在每次用户更改模态对话框中的联系人时加载联系人数据(因为两个窗口对用户都是可见的;使主应用程序不可见并不是一个选项)。所以模态对话框和主应用程序需要同步。

我的问题是:我想在这种情况下“在后台”将更改后的联系人加载到主应用程序中,因为每次加载联系人时都会运行业务逻辑,因此加载需要一点时间。

我们已经获得了用于将联系人从主应用本身加载到主应用的主应用代码(即在主线程上执行),并且运行良好。

但是,当它在单独的线程上(在模态对话框后面的后台)执行时,我将如何重用该代码?我担心的是这段代码(在主应用程序上加载联系人)做了很多 GUI 更新,理想情况下我不想更改现有代码中的所有 GUI 更新以查看例如如果需要调用等(因为现有代码现在不在主线程上执行)。

感谢任何想法。

【问题讨论】:

    标签: .net multithreading winforms visual-studio-2010 backgroundworker


    【解决方案1】:

    用于 windows 窗体的 MVVM?

    这就是你需要的。

    http://www.codeproject.com/Articles/364485/MVVM-Model-View-ViewModel-Patte

    【讨论】:

    • MVVM 是基于通知事件,代码已经改变... :D
    • 如上所述,理想情况下我不想更改主应用程序的现有代码。重新设计它不是一种选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多