我写了一个从网上下载类似图片的功能,然后使用它 在特殊按钮的单击事件中。 我的问题是,当我点击按钮,应用程序开始下载图片 互联网,我在窗体中的所有控件,锁定(直到下载过程完成!) 不仅仅是控制,我的所有形式。 那么如何才能在应用程序的背景下处理这个过程 用户可以同时使用其他控件。
答案 0 :(得分:1)
您只需要异步编程
这是一个非常简单的演示
private async void button1_Click(object sender, EventArgs e)
{
this.Text = "doing something...";
var result = await SomeHeavyWork();
this.Text = result.ToString();
}
private async Task<int> SomeHeavyWork()
{
using (var hc = new HttpClient())
{
var data = await hc.GetAsync("www.google.com");
return data.Content.Headers.Count();
}
}
这里发生了什么?
button1
时,button1_Click
将会执行。 SomeHeavyWork()
完成其工作。button1_Click
函数并执行我们正在执行的操作,然后再单击button1
(运行表单消息循环)。但在其他地方我们执行SomeHeavyWork()
并等待它。SomeHeavyWork()
工作完成后,我们返回button1_Click
并执行this.Text = result.ToString();
行。请阅读此msdn article