Normal
Unfortunately both old and proposed version are way too complex and low-level. You can do exactly same by using WebClient.DownloadFile and setting the correct headers. If you want to do it asynchronously you can say ThreadPool.QueueUserWorkItem(o => Download(file)).I've used all these in my plugin without any problems. No need to re-invent wheel when there are abstractions available in framework that should be used.
Unfortunately both old and proposed version are way too complex and low-level. You can do exactly same by using WebClient.DownloadFile and setting the correct headers. If you want to do it asynchronously you can say ThreadPool.QueueUserWorkItem(o => Download(file)).
I've used all these in my plugin without any problems. No need to re-invent wheel when there are abstractions available in framework that should be used.