2011-12-25 59 views
0

有谁知道WebClient.DownloadFileAsync是如何实现的? 我有这几个问题:WebClient.DownloadFileAsync底层实现

  1. 是从流返回保存在内存中,直到整个文件下载,或者它直接缓冲到一个临时文件(然后复制到正确的路径)?或直接进入文件指示?
  2. 编写一个简单的WCF REST服务,接听这些电话将要求如下:

    set response headers - Content-Type: application/octet-stream 
             Content-Length: 3 
             Content-Disposition: Attachment; 
             filename=SomeFileName.jpeg 
    

    ,并返回一个字节[]

我失去了什么?

+1

您可以通过直接查看[源代码](http://www.microsoft.com/resources/sharedsource/default.mspx)或使用[许多反汇编程序]之一( http://stackoverflow.com/questions/578883/a-net-disassembler-decompiler)。 – Oded 2011-12-25 12:33:47

+0

户田! - 不知道那个网站。在那里试图找到实际的来源有点失落 - 稍后再深入挖掘。再次感谢 – JanivZ 2011-12-25 12:43:36

+0

Bevakasha ...希望这些帮助。 – Oded 2011-12-25 12:44:07

回答

0
  1. 响应流以区块形式读取,这些区块直接写入输出文件流,整个文件不会加载到内存中。
  2. WebClient并不关心服务器发送什么标题。它读取响应流并将其保存到输出文件中。
+0

如果它没有读取响应标题conternt-length,它如何在进度更改事件中提供完整的precentage?或总字节接收..等等? – JanivZ 2011-12-25 14:16:41

+0

@JanivZ,它不能。如果没有Content-Length标题,则不会收到有关进度的通知。 – 2011-12-25 14:21:53

+0

明白了:P谢谢 – JanivZ 2011-12-25 14:39:17