我试图在不询问 Windows 应用程序用户的情况下更新一些数据,但是当我尝试下载 时,应用程序不可用,控件不可触摸。
法典:
using (WebClient client = new WebClient {Encoding = System.Text.Encoding.UTF8})
{
string url = "http://domain_name.com/api/getSomeData";
res = client.DownloadString(url);
}
这很可能是因为您正在 UI 线程上执行代码。 当 UI 线程繁忙时,它无法从鼠标或键盘抽取窗口消息,例如输入事件。 您的选择是:
-
在单独的线程上运行此代码。
-
使用异步技术,如 WebClient.DownloadStringAsync 或 DownloadStringTaskAsync。
其中,选项 #2 是更好的做法。
有关正确使用这两个选项的示例,请参阅这个封闭的"题外话"问题的已接受答案(尽管数字是从我的列表中交换的( 如何在耗时的方法上使用异步和等待