我编写了一个函数,可以从网络下载类似于图片的内容,并在一个特殊按钮的点击事件中使用它。我的问题是,当我点击按钮,应用程序开始从互联网下载图片,我的所有控件的形式,锁定(直到下载过程完成!)不仅仅是控制,我所有的形式也是如此。因此,如何在应用程序的背景下处理这个过程,用户可以同时与其他控件一起工作。
发布于 2015-01-17 07:22:26
您需要的只是异步编程。
下面是一个非常简单的演示
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文章
https://stackoverflow.com/questions/28000741
复制相似问题