none
多出同时访问静态的 System.Net.Http.HttpClient 字段去下载是什么情况?

    问题

  • static class A
    {
        static HttpClient _hc = new HttpClient();
        static async Task GetDataAsync(string uri)
        {
            ...
           await _hc.GetStringAsync(uri);
            ...
        }
    }

    ▲这种情况下,如果有多个地方同时调用 await A.GetDataAsync(uri); 方法会怎么样?能同时下载吗?还是按顺序下载?

    static class  A
    {
        static async Task GetDataAsync(string uri)
        {
            ...
           await new HttpClient().GetStringAsync(uri);
            ...
        }
    }

    ▲如果是这种情况又是如何?


    2016年2月22日 14:19

全部回复

  • 这里你的“多个地方”本身是并行的,那么这样调用会同时并行下载。但如果你的“多个地方”是同步的,那么只会一个一个顺序下载。await调用会同步等待Task result后再继续执行。

    第二种和第一种类似,不同的是每次都要初始化一个HttpClient,你需要考虑是否值得这样,会比较损耗资源。


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2016年2月25日 2:51
  • 就比如我的界面有 9x9TextBlock,当程序运行时每个 TextBlock Loaded 事件里都去调用 await A.GetDataAsync(uri); (但 uri 是不同的!),这个下载是按顺序下载还是能独立的在同一时间各自下载?
    2016年2月25日 3:36