Надеюсь, это простой вопрос. У меня есть эта строка кода:Продолжение не запускается, если предыдущее отменено
Task operation = Task.Factory.StartNew(() => this.Start(arg), m_token.Token)
.ContinueWith((previous) => Completed(previous, arg), TaskScheduler.FromCurrentSynchronizationContext());
Объект агд содержит CancellationToken.
Если я отменил задание (которое я подтвердил, что оно отменено), метод Completed вообще не вызывается. Не уверен, что здесь происходит, и что я сделал неправильно.
Возможно, это важный бит: я использую блок обработки исключений Enterprise Library, который обертывает все исключения. Однако все работает отлично, когда «Исход» вызывает исключение; вызывается Completed.
[Этот пример] (http://pastie.org/8527751) работает нормально; единственная разница между этим и вашим кодом - это scheduler/sync-context (который является PITA для работы); могу ли я попросить вас попробовать код из этой пасти, но с вашим кодом планировщика/синхронизации-контекста (т. е. «TaskScheduler.FromCurrentSynchronizationContext()»)? что происходит тогда? –
Из любопытства: what * is * sync-context, который вы используете? (Я тестировал с использованием базовой реализации, и снова: код работал нормально, даже используя 'TaskScheduler.FromCurrentSynchronizationContext()') –
Я попробую пример. Это приложение WinForms, поэтому метод Completed должен запускаться в потоке графического интерфейса. – Nezreli