string[] strArray = new WebClient().DownloadString("MYSITE").Split(new char[1]
{
','
});
每当我使用此代码时,我的应用程序会冻结,直到获取信息,有没有办法阻止冻结?
答案 0 :(得分:4)
DownloadString
是一个阻止通话。只有在提交响应后才会返回控制权。要使您的UI响应,请使用:
await DownloadStringTaskAsync
或
使用ThreadPool
中的一个帖子。
如果您不知道如何使用async await
:
async void yourMethod()
{
string html = await webClient.DownloadStringTaskAsync(uri);
if(!string.IsNullOrEmpty(html))
var htmlSplit = html.Split(',');
}
答案 1 :(得分:1)
如果您在主线程上下载某些内容,该应用将停止更新用户界面,您的应用将冻结,直到完成下载。
您需要致电DownloadStringAsync
,因此会将其下载到另一个帖子中:
WebClient client = new WebClient();
string[] strArray;
client.DownloadStringCompleted += (sender, e) =>
{
// do something with the results
strArray = e.Result.Split(new char[1] { ',' });
};
client.DownloadStringAsync("MYSITE");
答案 2 :(得分:0)
您也可以创建一个帖子:
Thread download = new Thread(DownloadString);
download.Start();
private void DownloadString()
{
string[] strArray = new WebClient().DownloadString("MYSITE").Split(new char[1]
{
','
});
}