我有一个从互联网加载图像的功能。然而,在加载时,我的应用程序无法执行任何其他操作。有解决办法吗?
谢谢!
这是我的代码:
public static Bitmap BitmapFromWeb(string URL)
{
try
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
myRequest.Method = "GET";
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
Bitmap bmp = new Bitmap(myResponse.GetResponseStream());
myResponse.Close();
return bmp;
}
catch (Exception ex)
{
return null;
}
}
private void button1_Click(object sender, EventArgs e)
{
load_avatrar();
}
private void load_avatrar()
{
pictureBox_avatar.Image = BitmapFromWeb(avatral_url);
}
最佳答案
看看BackgroundWorker .它旨在在另一个线程中运行这些类型的操作以释放您的应用程序。
更新
根据您的代码,使用 BackgroundWorker,您可以拥有如下内容:
private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs args)
{
Bitmap b = BitmapFromWeb("some string");
this.Invoke((MethodInvoker)SOME_METHOD_USING_BITMAP(b));
}
位图下载完成后,将调用 SOME_METHOD_USING_BITMAP
并获取结果,您可以相应地更新 UI。
更新 2
SOME_METHOD_USING_BITMAP
将是您的 load_avatar
方法。让它接受类型为 Bitmap
的参数:
private void load_avatar(Bitmap avatar)
{
pictureBox_avatar.Image = avatar;
}
关于c# - 从 Internet 下载图像时在 C# 中使用多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5300788/