优化模块资源释放与异步预加载

This commit is contained in:
2026-09-03 14:16:48 +08:00
parent a263522b47
commit fddab16bd2
35 changed files with 1553 additions and 977 deletions
@@ -32,10 +32,11 @@
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.btnCancel = new DevExpress.XtraEditors.SimpleButton();
this.btnFileManger = new DevExpress.XtraEditors.SimpleButton();
this.p_menu = new DevExpress.XtraBars.PopupMenu();
this.barManager1 = new DevExpress.XtraBars.BarManager();
this.p_menu = new DevExpress.XtraBars.PopupMenu(this.components);
this.barManager1 = new DevExpress.XtraBars.BarManager(this.components);
this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
@@ -55,7 +56,7 @@
this.gridSign = new Lskj.Control.GridControlEx();
this.pl_bottom = new DevExpress.XtraEditors.PanelControl();
this.btnPrint = new DevExpress.XtraEditors.DropDownButton();
this.pMprint = new DevExpress.XtraBars.PopupMenu();
this.pMprint = new DevExpress.XtraBars.PopupMenu(this.components);
this.simpleButton1 = new DevExpress.XtraEditors.SimpleButton();
this.pl_right = new DevExpress.XtraEditors.PanelControl();
this.pl_right_bottom = new DevExpress.XtraEditors.PanelControl();
@@ -537,7 +537,8 @@ namespace Lskj.BaseAccraditation
}));
cachesDic.AddTask(tab_basicInfo, "DynamicModel", dynamicModelTask);
cachesDic.AddTask(tab_basicInfo, "Details", detailTask);
tab_basicInfo.GetDataCaches(cachesDic);
// TabControlEx.GetDataCaches 会创建明细页中的 WinForms/DevExpress
// 控件,不能在此后台预加载阶段调用;BindTab 在 UI 线程补充创建。
//初始化常用工具
Task<DataTable> GetBaseGridRightMenusTask = cachesDic.AddTask(this, "GetBaseGridRightMenus", new Task<DataTable>(() =>
{
@@ -1191,6 +1192,12 @@ namespace Lskj.BaseAccraditation
Dictionary<object, Hashtable> dataCaches = SysModel != null ? SysModel.DataCaches : null;
this.tab_basicInfo.Model = this.SysModel;
this.tab_basicInfo.ParentControlEx = this.ControlObj;
if (dataCaches != null &&
dataCaches.GetTask<DynamicModel>(tab_basicInfo, "DynamicModel") != null &&
dataCaches.GetTask<List<GridDetailModel>>(tab_basicInfo, "Details") != null)
{
tab_basicInfo.GetDataCaches(dataCaches);
}
if (!dataCaches.GetValue(tab_basicInfo, "Details", out List<GridDetailModel> details))
{
details = GetTabDetails();
+12 -2
View File
@@ -353,11 +353,16 @@ namespace Lskj.BaseAccraditation
tp.Controls.Add(frmbaseAccradit);
tp.ShowCloseButton = DefaultBoolean.True;
tp.Dock = DockStyle.Fill;
StaticControl.ModuleResourceScope moduleScope =
StaticControl.RegisterModulePage(module, tp, frmbaseAccradit);
ERPInfo.Instance.AddModulePage(tp);
ERPInfo.Instance.CurrentModulePage = tp;
frmbaseAccradit.Opacity = 0;
frmbaseAccradit.SetFormSize();
frmbaseAccradit.Show();
using (StaticControl.PushModuleScope(moduleScope))
{
frmbaseAccradit.Show();
}
ERPInfo.Instance.ModuleForms.Add(guid, module);
}
else
@@ -477,11 +482,16 @@ namespace Lskj.BaseAccraditation
tp.Controls.Add(frmbaseAccradit);
tp.ShowCloseButton = DefaultBoolean.True;
tp.Dock = DockStyle.Fill;
StaticControl.ModuleResourceScope moduleScope =
StaticControl.RegisterModulePage(module, tp, frmbaseAccradit);
ERPInfo.Instance.AddModulePage(tp);
ERPInfo.Instance.CurrentModulePage = tp;
frmbaseAccradit.Opacity = 0;
frmbaseAccradit.SetFormSize();
frmbaseAccradit.Show();
using (StaticControl.PushModuleScope(moduleScope))
{
frmbaseAccradit.Show();
}
ERPInfo.Instance.ModuleForms.Add(guid, module);
}
else