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。您将能够从构造函数中删除所有处理,使应用程序继续正常加载。什么是重新加载的构造函数?