3月13日 datagridview表格图片加载
多个子线程同时执行下载
public void SearchStory(string keyword)
{
stories = Program.Provider.Search(keyword);
datagridview_stories.DataSource = stories;
for (int i = 0; i < stories.Count; i++)
{
var z = i;
Task.Run(() =>
{
Image img = DataProvider.GetImage(stories[z].ImgSrc);
if (img != null)
{
datagridview_stories["图片", z].Value = img;
}
});
}
//for (int i = 0; i < stories.Count; i++)
//{
// Thread thread = new Thread((obj) =>
// {
// Thread.Sleep(50);
// var z = (int)obj;
// Image img = DataProvider.GetImage(stories[z].ImgSrc);
// if (img != null)
// {
// datagridview_stories["图片", z].Value = img;
// }
// });
// thread.Start(i);
//}
}
WebClient的异步下载
public void SearchStory(string keyword)
{
stories = Program.Provider.Search(keyword);
datagridview_stories.DataSource = stories;
for (int i = 0; i < stories.Count; i++)
{
WebClient wc = new WebClient();
wc.DownloadDataCompleted += (sender, userToken) =>
{
try
{
var rowIndex = (int)userToken.UserState; //调用DownloadDataAsync时,第二个参数传入的数据
datagridview_stories["图片", rowIndex].Value = userToken.Result;// 下载的结果
}
catch (Exception)
{
}
};
wc.DownloadDataAsync(new Uri(stories[i].ImgSrc), i);
}
}