예제 #1
0
        private static Await <string> DownloadAsync(string uri)
        {
            var url = new Uri(uri);

            return(complete =>
            {
                var webClient = new WebClient();

                var awaitDownload = Await.Event <DownloadDataCompletedEventArgs, DownloadDataCompletedEventHandler, string>(
                    e => Result.Of(Encoding.ASCII.GetString(e.Result), e.Error).Success,
                    h => webClient.DownloadDataCompleted += h,
                    h => webClient.DownloadDataCompleted -= h,
                    a => a.Invoke);

                var download = awaitDownload(complete);

                webClient.DownloadDataAsync(url);

                return download;
            });
        }