我正在使用WinForms,但遇到以下问题。我应该在特定时间内动态创建并添加两个选项卡。

这是主要布局

IMainGeneralReportForm mainGeneralReportLayoutForm =
       ObjectFactory.GetOrCreateView<IMainGeneralReportForm>();

我尝试通过以下方式添加我的元素:
    ObjectFactory.ShowView<IGeneralReportSimpleView>();
    ObjectFactory.ShowView<IGeneralReportAdvancedSearchView>();

方法ShowView可以完美地工作。但是,当我一一调用方法时,程序的性能会变慢。因此,我决定以另一种方式使用多线程:
     MainGeneralReportForm generalReportForm = mainGeneralReportLayoutForm as MainGeneralReportForm
generalReportForm.Invoke(new SimpleViewDelegate(() =>
            {
                return ObjectFactory.ShowView<IGeneralReportSimpleView>()
            }));

generalReportForm.Invoke(new AdvancedViewDelegate(() =>
            {
                return ObjectFactory.ShowView<IGeneralReportAdvancedSearchView>()
            }));

    private delegate IGeneralReportSimpleView SimpleViewDelegate();
    private delegate IGeneralReportAdvancedSearchView AdvancedViewDelegate();

这些方法的工作原理相同。您能给我一个建议如何解决多线程问题吗?

最佳答案

您不能以这种方式进行多线程,因为它们都在调用UI线程。您将需要在单独的线程上创建常规报告表单,然后将报告添加到主UI线程上的对象。

09-28 02:59