private async void DoJob(Obj obj) { if (obj.CancellationToken.IsCancellationRequested) { return; } Stop(); var document = obj.State.Document; var pageNumber = obj.State.PageNumber; var page = await document.GetPageAsync(pageNumber); if (obj.CancellationToken.IsCancellationRequested) { Start(); return; } var textLayer = await document.GetTextLayerAsync(pageNumber); Start(); if (obj.CancellationToken.IsCancellationRequested) { return; } await CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => obj.Callback(page, textLayer, obj.CancellationToken)); }