Я пишу приложение магазина Windows и нуждаюсь в некоторой помощи по методу Task.Run
. Я вызываю службу для извлечения данных из службы; потому что я хочу, чтобы отменить задание, если интернет отключен я передаю CancellationTokenкак подождать task.run
await Task.Run(async() => await Download1(), cts.Token);
Существует еще один метод загрузки, который должен работать после этого выше задача выполнена таким образом, я использую Await. Обе задачи записываются в одни и те же файлы, поэтому я хочу убедиться, что они не запускаются параллельно.
await Task.Run(async() => await Download2(), cts.Token);
Проблема в том, что над задачей 2 начинается без выполнения задачи 1, и поэтому обе задачи выполняются параллельно. Что я делаю неправильно? Пожалуйста, порекомендуйте.
Download1 выглядит следующим образом: -
public async Task Download1()
{
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
async() =>
{
Status = "Downloading!";
var ListSetupTasks = new List<SetupView>();
foreach (var setup in AllSetupTasks.Setup)
{
ListSetupTasks.Add(new SetupViewModel(setup));
}
IEnumerable<Task> downloadTasksQuery = from setup in ListSetupTasks where setup.TaskType == TaskType.Web select _masterlistrepository.GetTask(setup, false, datetime, branch);
Task[] downloadTasks = downloadTasksQuery.ToArray();
await Task.WhenAll(downloadTasks);
IEnumerable<Task> FinalTasksQuery = from setup in ListSetupTasks where setup.TaskType == TaskType.Web select _masterlistrepository.GetTask(setup, false);
foreach (var task in FinalTasksQuery)
{
await task;
}
});
}
CancellationToken используется следующим образом: -
async void NetworkChanged(object sender, NetworkConnectionStatusChangedEventArgs e)
{
if (e.Value == false && LoadingData == true)
{
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
async() =>
{
await _alertmessageservice.ShowAsync("", "Network error. Please retry!");
cts.Cancel();
});
}
}
Как выглядит 'Download1' и' Download2'? – i3arnon