Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows 8应用程序中使用HttpClient进行并行HTTPRequest_C#_.net_Windows 8_.net 4.5_Dotnet Httpclient - Fatal编程技术网

C# 在Windows 8应用程序中使用HttpClient进行并行HTTPRequest

C# 在Windows 8应用程序中使用HttpClient进行并行HTTPRequest,c#,.net,windows-8,.net-4.5,dotnet-httpclient,C#,.net,Windows 8,.net 4.5,Dotnet Httpclient,我正在Windows 8应用程序中使用HttpClient发送HTTP请求和接收HTTP响应。关于同一点,我有几个问题: 1) 我可以使用单个HttpClient对象发送多个/并行HTTP请求吗?有没有一种推荐的方法可以有效地使用HttpClient对象 2) 每次创建HttpClient对象和每次新请求重复使用同一对象有什么区别 3) 我正在使用Fiddler跟踪请求和响应。我发现Fiddler中的响应时间与我在应用程序中手动计算的响应时间不同。Fiddler中请求的响应时间始终低于我的应用程

我正在Windows 8应用程序中使用HttpClient发送HTTP请求和接收HTTP响应。关于同一点,我有几个问题:

1) 我可以使用单个HttpClient对象发送多个/并行HTTP请求吗?有没有一种推荐的方法可以有效地使用HttpClient对象

2) 每次创建HttpClient对象和每次新请求重复使用同一对象有什么区别

3) 我正在使用Fiddler跟踪请求和响应。我发现Fiddler中的响应时间与我在应用程序中手动计算的响应时间不同。Fiddler中请求的响应时间始终低于我的应用程序中计算的响应时间。谁能告诉我为什么会这样

4) 我遇到的另一件事是,对于每个请求,它都在进行HTTPS握手。相反,它应该只做第一次。我用小提琴手检查了一下,它在那里清晰可见。是否需要在HttpClient对象中设置任何属性来阻止每次执行此操作

5) HttpClient是否是线程安全的?

1和5:

:

以下方法是线程安全的:

  • 取消挂起请求
  • 删除异步
  • GetAsync
  • GetByteArrayAsync
  • GetStreamAsync
  • GetStringAsync
  • 邮政同步
  • PutAsync
  • 发送异步
  • 2和4:

    :

    HttpClient类实例充当发送HTTP请求的会话

    3:


    小提琴手充当代理人。您的浏览器将请求发送给Fiddler,后者将其转发给源服务器。这会增加请求时间。

    确保对每个异步HttpRequest使用相同的HttpClient对象,这将防止它与请求重叠(1),它们是线程安全的,但不允许同时执行多个请求。但是,当您使用*Async()变量时,只需对返回的
    任务
    调用
    ContinueWith()
    ,即可链接多个请求。