Я пишу небольшое приложение для отслеживания GPS на WP8.1, и я ударил немного о стену. Я могу создать задачу и делать все, что мне нужно, но я не могу ее отменить. В качестве эталона я использую этот answerWindows Phone 8.1 GPS фоновая задача
Это конструктор задачи, которые я пользователь (также пробовал с TaskFactory):
public async void run()
{
IProgress<object> progress = new Progress<object>(_ => track());
//Above is needed to be able to update the UI component
Task.Run(async() =>
//Need to run async because the task is a GPS position call that has a delay
{
while (true)
{
await Task.Delay(1000);
progress.Report(null);
}
}, tokenSource.Token);
}
Я создал объект tokenSource в секции основного класса в качестве публичной переменной иметь доступ к нему через метод stop_click stop (иначе у меня нет возможности использовать tokenSource.Cancel())
Когда я использую tokenSource.Cancel() внутри метода конструктора, все в порядке. Но когда я пытаюсь использовать его через Button_click так:
private void Button_Stop(object sender, RoutedEventArgs e)
{
tokenSource.Cancel();
}
Ничего не происходит. У кого-нибудь есть какие-то решения?
Означает ли это, что если и использовать асинхров() каждый раз, когда он создает новый поток с новым маркером и с нажатием кнопки Methond Я отменяю оригинальные один из которых поток уже закрыт? Если да, то какие идеи об этом обойти?
Отлично! Работает как шарм. Большое спасибо за помощь! –
Что делать, если я хотел бы поймать исключение, созданное для обработки некоторых других операций? –
@JarekBrocki 'Task.Run' возвращает задание, которое вы можете ожидать. – i3arnon