我有一个从互联网加载图像的功能.然而,在加载时,我的应用程序无法执行任何其他操作.有没有解决的办法?
谢谢!
这是我的代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
看看BackgroundWorker.它意味着在另一个线程中运行这些类型的操作来释放您的应用程序.
UPDATE
根据您的代码,您可以使用BackgroundWorker,具有以下内容:
private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs args)
{
Bitmap b = BitmapFromWeb("some string");
this.Invoke((MethodInvoker)SOME_METHOD_USING_BITMAP(b));
}
Run Code Online (Sandbox Code Playgroud)
当位图完成下载时,SOME_METHOD_USING_BITMAP将使用结果调用,您可以相应地更新UI.
更新2
SOME_METHOD_USING_BITMAP将是你的load_avatar方法.它有一个类型的参数Bitmap:
private void load_avatar(Bitmap avatar)
{
pictureBox_avatar.Image = avatar;
}
Run Code Online (Sandbox Code Playgroud)