0x00 一个坑…两个坑…三个坑

坑多才能进步

0x01 不好用的 Web 库

今天把 WebClient 封装了一下,干了两件微小的事情:

  1. 通过 override GetWebRequest() 添加了 Timeout 的支持
  2. 通过 override GetWebRequest() 和 GetWebResponse() 支持了自动维护 Cookie

其中第二点参考SOF的一个回答

然而调用 DownloadStringAsync() 的时候,发现 DownloadStringCompletedEvent 不会被 raise

本来以为是因为后面函数已经 return 了的原因,结果折腾了很久发现原来是 Timeout 没有生效 于是只能通过 Timer 的 Elapsed 事件来做 DownloadStringAsync() Timeout 的 workaround 了

同步版本的 DownloadString() 还没有试,不知道支不支持 Timeout

老版本的各种 Async 没有 await 用就算了,还有这种莫名其妙的坑….

可以看到微软从.NET4开始,向更现代的异步编程方式演变的过程中,造了很多坑出来