The following can be modified to use yield return and observables
private async void Button_Click(object sender, RoutedEventArgs e)
{
await Test();
}
Task
{
WebClient w = new WebClient();
return w.DownloadStringTaskAsync("");
}
Task
{
var tcs = new TaskCompletionSource
WebClient w = new WebClient();
w.DownloadStringCompleted +=
(_, args) =>
{
tcs.SetResult(args.Result);
};
return tcs.Task;
}