首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >第一次单击异步按钮时,UI冻结5秒

第一次单击异步按钮时,UI冻结5秒
EN

Stack Overflow用户
提问于 2018-06-10 22:26:43
回答 3查看 103关注 0票数 2

第一次点击按钮时,UI冻结5秒可以吗?我的意思是,当我点击按钮从网站加载内容,然后我不能移动窗口5秒。

我的代码如下所示:

代码语言:javascript
运行
复制
private async void Button_Click(object sender, RoutedEventArgs e)
{            
    var html = await GetHtmlAsync("http://msdn.microsoft.com"); 
    MessageBox.Show(html.Substring(0, 10));
}


public async Task<string> GetHtmlAsync(string url)
{
    var webClient = new WebClient();
    return await webClient.DownloadStringTaskAsync(url);
}

但是,如果我再次单击上面的按钮或单击其他async按钮,则不会出现UI冻结。

那么,当UI冻结5秒时,当第一次单击按钮时,是否可以呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-11 06:47:43

HttpClient是可行的方法,但让我们看一下代码。

正在提取corefx source的代码。如果你真的得到了一个HttpWebRespone,这个代码片段可能会指向你所看到的问题。

代码语言:javascript
运行
复制
public override Stream GetResponseStream()
{
    CheckDisposed();
    return _httpResponseMessage.Content.ReadAsStreamAsync().GetAwaiter().GetResult();
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-11 00:14:52

可能会有一些缓存。每次调用时尝试另一个URL。但在等待的情况下,它不应该被阻塞。

我测试过了,没有任何延迟。我会开始一个新的客户。有些奇怪的事情正在发生。

放入一些秒表Debug,试着找出延迟在哪里。

代码语言:javascript
运行
复制
private async void btnURLclick(object sender, RoutedEventArgs e)
{
    Stopwatch sw = new Stopwatch();
    sw.Start();
    var html = await GetHtmlAsync("http://msdn.microsoft.com");
    Debug.WriteLine($"btn {sw.ElapsedMilliseconds}");
    MessageBox.Show(html.Substring(0, 10));

}
public async Task<string> GetHtmlAsync(string url)
{
    Stopwatch sw = new Stopwatch();
    sw.Start();
    var webClient = new WebClient();
    Debug.WriteLine($"taskA {sw.ElapsedMilliseconds}");
    return await webClient.DownloadStringTaskAsync(url);
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-11 02:51:12

这可能是由于某些通信初始化造成的。试试这个:

代码语言:javascript
运行
复制
public async Task<string> GetHtmlAsync(string url)
{
    await Task.Delay(1).ConfigureAwait(false);
    var webClient = new WebClient();
    return await webClient.DownloadStringTaskAsync(url).ConfigureAwait(false);
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50784701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档