BakeProgressState.Cancel
Declaration
public void Cancel();Описание
Отмена асинхронной операции.
Запрашивает отмену всех текущих операций, использующих это состояние прогресса. Метод возвращает управление немедленно, а операция отменяется, как только реализация сможет отреагировать на запрос и остановить её.
Поведение отмены:
— Запрос отмены является совместным — операции должны проверять отмену. — Не все операции поддерживают отмену. — Отмена может занять некоторое время, чтобы вступить в силу. — Используйте WasCancelled, чтобы проверить, было ли запрошено отмена.
Примечание: Этот метод только запрашивает отмену; он не принуждает к немедленному прекращению.
// Set up cancellable baking operation using var progress = new BakeProgressState(); var integrator = new RadeonRaysProbeIntegrator(); integrator.SetProgressReporter(progress);
// Start long-running operation var bakeTask = Task.Run(() => { return integrator.IntegrateIndirectRadiance( context, 0, 10000, 4096, false, outputBuffer); });
// Allow user to cancel with UI button cancelButton.onClick.AddListener(() => { progress.Cancel(); statusText.text = "Cancelling..."; });
// Wait for completion or cancellation var result = await bakeTask; if (progress.WasCancelled()) { statusText.text = "Bake was cancelled"; }