我正在使用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线程上的对象。