0
Я пытаюсь реализовать загрузку заданного URL-адреса. Кстати мой код:Преобразование AsyncCallback в ожидаемую задачу
private string url;
private StorageFile outputFile;
public void download()
{
HttpWebRequest request = HttpWebRequest.CreateHttp(url);
request.BeginGetResponse(new AsyncCallback(playResponseAsync), request);
}
public async void playResponseAsync(IAsyncResult asyncResult)
{
//Declaration of variables
HttpWebRequest webRequest = (HttpWebRequest)asyncResult.AsyncState;
try
{
using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.EndGetResponse(asyncResult))
{
byte[] buffer = new byte[1024];
using (var writeStream = await outputFile.OpenAsync(FileAccessMode.ReadWrite))
{
using (var outputStream = writeStream.GetOutputStreamAt(0))
{
using (var dataWriter = new DataWriter(outputStream))
{
using (Stream input = webResponse.GetResponseStream())
{
var totalSize = 0;
for (int size = input.Read(buffer, 0, buffer.Length); size > 0; size = input.Read(buffer, 0, buffer.Length))
{
dataWriter.WriteBytes(buffer);
totalSize += size; //get the progress of download
}
await dataWriter.StoreAsync();
await outputStream.FlushAsync();
dataWriter.DetachStream();
}
}
}
}
Debug.WriteLine("Finished");
}
}
catch
{
}
}
}
Я хочу, чтобы мой способ загрузки, чтобы иметь следующую подпись
Task<bool> download();
(Возвращение верно, если загрузка удалась, и ложь в противном случае)
делает его ожидаемая задача. Но я не владею C# и не знаю, как это сделать. Вы можете мне помочь?
Благодаря
Посмотрите в использовании 'HttpClient' для создания веб-запроса. Это упростит вам работу, так как выставляет TAP api. –