fix(legacy): keep bill cache control creation on UI thread

This commit is contained in:
2026-08-30 21:42:56 +08:00
parent 769aa52241
commit 0058939a8a
4 changed files with 322 additions and 277 deletions
+12 -10
View File
@@ -431,15 +431,8 @@ namespace Lskj.PubBillSpecial
//if (billModel.CenterMain) dataTable = this.SetControlMargins(dataTable);
return dataTable;
}));
Task<MyControl> controlObjTask = cachesDic.AddTask(this, "ControlObj", new Task<MyControl>(() =>
{
MyControl myControl = new MyControl() { Model = dynamicModel };
myControl.OtherParams = dynamicModel.OtherParams();
cachesDic.AddTask(myControl, "DynamicModel", dynamicModelTask);
cachesDic.AddTask(myControl, "ControlsTable", controlLocationTask);
myControl.GetControlDataCaches(cachesDic);
return myControl;//主表控件
}));
// MyControl 持有 WinForms Timer。后台阶段只加载控件配置,
// 实际 MyControl 及编辑控件由 InitializeBillInfo 在 UI 线程创建。
Task<DataTable> addGroupDataTask = cachesDic.AddTask(this, "AddGroupData", new Task<DataTable>(() =>
{
return BaseModuleImpl.GetAddGroupData(billModel.FormKey);//获取主信息分组数据
@@ -940,6 +933,15 @@ namespace Lskj.PubBillSpecial
if (!dataCaches.GetValue(this, "ControlObj", out ControlObj))
{
this.ControlObj = new MyControl() { Model = SysModel };//主表控件
this.ControlObj.OtherParams = this.SysModel.OtherParams();
if (dataCaches != null)
{
dataCaches.AddTask(this.ControlObj, "DynamicModel",
new Task<DynamicModel>(() => this.SysModel));
dataCaches.AddTask(this.ControlObj, "ControlsTable",
new Task<DataTable>(() => controls));
this.ControlObj.GetControlDataCaches(dataCaches);
}
}
@@ -6857,4 +6859,4 @@ namespace Lskj.PubBillSpecial
}
}
}
}
}