Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加载指示器窗口窗体_C#_.net_Winforms_Foreach - Fatal编程技术网

C# 加载指示器窗口窗体

C# 加载指示器窗口窗体,c#,.net,winforms,foreach,C#,.net,Winforms,Foreach,我有三种表格: 登录表格 浏览用户表单 用户配置文件 还有一些课程: 使用者 文章 应用程序 因此,我的表单是使用重新加载的构造函数创建的。其中一项是: public UserProfile(User user) { InitializeComponent(); Show(); pictureBox2.Load("https://d13yacurqjgara.cloudfront.net/users/34535/screenshots/63

我有三种表格:

登录表格 浏览用户表单 用户配置文件 还有一些课程:

使用者 文章 应用程序 因此,我的表单是使用重新加载的构造函数创建的。其中一项是:

public UserProfile(User user)
    {
        InitializeComponent();
        Show();
        pictureBox2.Load("https://d13yacurqjgara.cloudfront.net/users/34535/screenshots/631316/loader_gif.gif");
        string aJSON = @client.DownloadString(App.HOST + "api/get_user_articles?e=" + App.EMAIL + "&p=" + App.PASSWORD + "&u=" + user.id.ToString());
        articles = JsonConvert.DeserializeObject<List<Article>>(aJSON);
        listView1.View = View.LargeIcon;
        imageList1.ImageSize = new Size(32, 32);
        int i = 0;
        foreach (var article in articles)
        {
            ListViewItem aView = new ListViewItem(article.theme);
            string aUrl = client.DownloadString(App.HOST + "api/get_article_image?a=" + article.id);
            if (!aUrl.StartsWith("https://"))
            {
              aUrl = App.HOST + "assets/fallback/default_article-f8a3a64f38bb9b0d777f6722ab64ca0c.png";
            }
            byte[] imageData = client.DownloadData(aUrl);
            MemoryStream stream = new MemoryStream(imageData);
            Image img = Image.FromStream(stream);
            stream.Close();
            imageList1.Images.Add(img);
            aView.ImageIndex = i;
            listView1.Items.Add(aView);
            i++;

        }

    }

此代码正在从远程服务器加载图像和文章。这是一个非常长期的过程。我需要在窗口显示和窗口完全加载之间创建一些延迟加载效果。在此之前,我曾尝试在表单顶部创建PictureBox,并在完成加载后将其发送到底部。但它不起作用,因为表单在下载数据时处于睡眠模式。请写一些问题解决方案!谢谢大家!

图片加载必须在另一个线程中执行


您可以使用BackgroundWorker,这里有一个教程:

查看BackgroundWorker。您将能够从构造函数中删除所有处理,使应用程序继续正常加载。什么是重新加载的构造函数?