public async Task<nuint> DownloadFileAsync (Uri url, string destination)
{
this.Url = url.AbsoluteUri;
if (downloadTask != null)
return downloadTask.TaskIdentifier;
if (session == null) {
Initalize ();
}
Destination = destination;
SessionId = session.Configuration.Identifier;
if (!BackgroundDownloadManager.Tasks.TryGetValue (url.AbsoluteUri, out Tcs)) {
Tcs = new TaskCompletionSource<bool> ();
BackgroundDownloadManager.Tasks.Add (url.AbsoluteUri, Tcs);
using (var request = new NSUrlRequest (new NSUrl (url.AbsoluteUri))) {
downloadTask = session.CreateDownloadTask (request);
downloadTask.Resume ();
}
}
BackgroundDownloadManager.AddController (this.Url, this);
await Tcs.Task;
return downloadTask.TaskIdentifier;
}