我有一个用C#编写的WinForms应用程序。打开时出现的第一个屏幕是仪表板屏幕,可能需要一些时间才能加载。使用委托上的BeginInvoke调用数据加载方法。那部分很好,我的问题是当我想将读取数据加载到某些网格中时。让我回到我的UI线程的代码就像这样
BeginInvoke(new Action<DashboardDataInfo, int>(LoadDashboardData), data, outbox);
这一切都没有错误发生。我的问题是仪表板表格将跳转到屏幕顶部。如果数据加载花费的时间足够长,则用户可能已经在应用程序中进入另一个用户(因此这非常烦人)。除了分配一些DataGridView控件的DataSource属性之外,LoadDashboardData方法没有做太多工作。