C#表格:当初始化需要很长时间时如何显示表格?

Tiz*_*izz 1 c# forms treeview multithreading delay

我有ac#form,初始化时间需要一段时间(它从服务器获取信息,并填充TreeView).现在,代码看起来类似于:

public class myForm : Form
{
    InitializeComponent();
    List<Location> locations = getServerLocations(); // Server call

    foreach( Location loc in locations )
    {
        List<POI> POIs = loc.getLocationPOIs(); // Server call
        foreach( POI poi in POIs ) 
        {
             List<POIDetails> = poi.getPOIDetails(); // Server call
             ....
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你得到了我认为的观点......所以有一棵大树,我知道在用户扩展树之前我不能一直打电话.但目的是我只希望表单显示,在工具条上加载"加载...",同时所有处理和服务器都会发生.

现在,好像我还没有加载应用程序,因为在完成所有调用之前,没有任何内容会显示给用户.

Bro*_*ass 7

你不应该在UI线程上进行任何长时间运行的处理 - 而是将其移动到另一个线程,即使用a BackgroundWorker.您最初可以显示"正在加载"屏幕,并且在后台工作程序完成后,使用您的树结构更新UI.