今天试了一下,发现`WebClient`虽然支持异步,但果然不支持并发……
测试代码如下
Imports System.Net Imports System.Threading Module Module1 Sub Main() Dim c As New WebClient Dim t1 = c.DownloadStringTaskAsync("http://www.baidu.com") Dim t2 = c.DownloadStringTaskAsync("http://www.zhihu.com") Thread.Sleep(10) Console.WriteLine(t1.IsCompleted) Console.WriteLine(t1.IsCompleted) End Sub End Module
运行结果如下
未经处理的异常: System.NotSupportedException: WebClient 不支持并发 I/O 操作。 在 System.Net.WebClient.ClearWebClientState() 在 System.Net.WebClient.DownloadStringAsync(Uri address, Object userToken) 在 System.Net.WebClient.DownloadStringTaskAsync(Uri address) 在 System.Net.WebClient.DownloadStringTaskAsync(String address) 在 ConsoleApplication1.Module1.Main() 位置 ConsoleApplication1\Module1.vb:行号 9
测试环境:VS2013。