我正在使用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();
这些方法的工作方式相同。你能给我一个如何用多线程解决这个问题的建议吗?
答案 0 :(得分:1)
你不能以这种方式多线程,因为他们都在调用UI线程。您需要在单独的线程上创建一般报告表单,然后将报告添加到主UI线程上的对象。