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