如何在调用异步任务之前等待表单绘制?

时间:2016-11-15 15:17:52

标签: c# winforms async-await

我有一个主 - 详细信息表单,其中master和details属性放在两个单独的表布局中。细节布局最初是隐藏的。

我加载一条记录并显示主属性(使用bindingsource)。

然后,我单击一个按钮以显示详细信息布局。在这样做的过程中,我还异步获取详细信息,如下所示:

private void layoutDetails_VisibleChanged(object sender, EventArgs e)
{
    GetDetails();
}

private async void GetDetails()
{
    IEnumerable<OrderDetails> details = null;

    await Task.Delay(100).ContinueWith(t => 
    {
        details = orderRequest.GetDetails(order.Id);
    });

   bindingSourceDetails.DataSource = details;
}

但是,在UI暂时冻结以填充列表视图之前,表单没有足够的时间显示详细信息布局。

表单本身完全显示为在加载表单(用户选择要加载的记录)后很好地显示主属性。然后用户点击按钮切换到详细信息表格布局,这里列表视图会以某种方式暂时冻结,同时检索详细信息行,然后列表视图停靠在表格布局中。

上面不应该解决问题吗?或者是将details对象绑定到绑定源时导致的问题?

0 个答案:

没有答案