public virtual void OnComplete(DownloadFileEventArgs e)
            {
                EventHandler <DownloadFileEventArgs> handler = complete;

                if (handler != null)
                {
                    handler(this, e);
                }
            }
			public virtual void OnComplete(DownloadFileEventArgs e) {
				EventHandler<DownloadFileEventArgs> handler = complete;
				if (handler != null) {
					handler(this, e);
				}
			}
 /// <summary>
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 protected override void OnBeginDownloadSourceFile( object sender, DownloadFileEventArgs args ) {
     //Console.Write(Constants.DownloadingSourceCode);
     Console.Write("{0}Downloading {1}", String.Empty, args.TargetFileName);
     //Console.Write("{0}Downloading {1}", AppSettings.Indent, args.TargetFileName);
 }
 /// <summary>
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 protected override void OnDownloadSourceFileAfterEulaAccepted( object sender, DownloadFileEventArgs args ) {
     Console.Write( "{0}EULA accepted. Downloading {1} ", AppSettings.Indent, args.TargetFileName );
 }
			public async void downloadFileAsync(string url, IsolatedStorageFileStream filestream) {
				SynchronizationContext ctx = SynchronizationContext.Current;
				HttpWebRequest request = (HttpWebRequest)WebRequest.CreateHttp(new Uri(url));
				request.Method = "GET";

				Logger.log("DownloadRequestHandler", "Downloading " + url + " asynchronously...");

				request.BeginGetResponse(async callbackResult => {
					try {
						HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);
						Logger.log("DownloadRequestHandler", "Status: " + (int)response.StatusCode + " " + response.StatusDescription);
						if (response.Headers["Content-Length"] != null) {
							Logger.log("DownloadRequestHandler", "Content length: " + response.Headers["Content-Length"]);
						} else {
							Logger.log("DownloadRequestHandler", "Content length: unknown");
						}

						Stream responseStream = response.GetResponseStream();
						BinaryReader br = new BinaryReader(responseStream);
						int responseBufferSize = 4096;
						int responseBytesRead = 0;
						int responseTotalBytesRead = 0;
						byte[] responseBuffer = new byte[responseBufferSize];

						while ((responseBytesRead = br.Read(responseBuffer, 0, responseBuffer.Length)) > 0) {
							responseTotalBytesRead += responseBytesRead;
							await filestream.WriteAsync(responseBuffer, 0, responseBuffer.Length);
						}
						filestream.Close();

						Logger.log("DownloadRequestHandler", "Wrote " + responseTotalBytesRead + " bytes");

						DownloadFileEventArgs args = new DownloadFileEventArgs();
						args.file = filestream.Name;
						args.size = responseTotalBytesRead;

						ctx.Post(result => {
							DownloadFile df = (DownloadFile)callbackResult.AsyncState;
							df.OnComplete((DownloadFileEventArgs)result);
						}, args);

					} catch (WebException ex) {
						// check if we have an expired or self-signed cert
						if (ex.Status == WebExceptionStatus.UnknownError) {
							if (ex.Response.Headers.Count == 0) {
								Logger.log("DownloadRequestHandler", "Invalid SSL certificate, returning a 400 Bad Request");
								throw new Exception("Download Handler Exception: Invalid SSL certificate, returning a 400 Bad Request");
							} else {
								Logger.log("DownloadRequestHandler", "File not found, returning a 404");
								throw new Exception("Download Handler Exception: File not found, returning a 404");
							}
						} else {
							Logger.log("DownloadRequestHandler", "400 Bad Request");
							Logger.log("DownloadRequestHandler", ex.Status.ToString());
							throw;
						}
					}
				}, this);
			}