Как пропустить две ожидающие задачи?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как пропустить две ожидающие задачи?

Сообщение Anonymous »

Я использую Unity 2022.3.36f1 и библиотеку UniTask, но мне кажется, мне не хватает некоторых важных базовых знаний.
Я пытаюсь воспроизвести одно видео, затем другое после этого если не будет вызвано действие «пропустить» во время любого из видео, которое должно остановить их обоих и продолжить код. Это не работает, если вы пропускаете первое видео - второе все равно воспроизводится.
Мое внешнее логическое значение _isSkip либо сбрасывается обратно на false, либо более скорее всего, он использует начальное значение, и в этом случае как мне заставить WaitUntil проверять значение во время его запуска?

Код: Выделить всё

private bool _isSkip;

private void SkipVideos() {
_isSkip = true;
Media.VideoStop();
}

private async UniTaskVoid StartMode() {
// this called by StartMode().Forget();

_isSkip = false;

// video1 already playing, takes 7.1s

// SkipVideos can be called during first await OR second, and it should skip BOTH videos
await UniTask.WhenAny(UniTask.Delay(7140), UniTask.WaitUntil(() =>_isSkip == true));

var delay = Media.VideoPlay("video2"); // returns millisecond length of video
// if SkipVideos was called during first delay, when we get to here _isSkip is false, why?
await UniTask.WhenAny(UniTask.Delay(delay), UniTask.WaitUntil(() =>_isSkip == true));

// other code that should be done after both vids finish OR skip was triggered, go here...
}
Сначала я пытался использовать токены отмены, но потом другие вещи не запустились (?). Думаю, я мог бы разбить на подзадачу, но я действительно стараюсь иметь чистый, понятный и простой код — если он станет слишком многословным, мне, вероятно, придется вернуться к сопрограммам.
Я думал, что Media.VideoPlay может быть асинхронным в будущем для аккуратности, но оставил вопрос как есть.

Подробнее здесь: https://stackoverflow.com/questions/792 ... wait-tasks
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • UniTask: Как пропустить две ожидающие задачи?
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как пропустить две ожидающие задачи?
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как пропустить две ожидающие задачи?
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Две разные идеи – две разные проблемы. Прозрачный фон работает = поддержка кликов не работает. Как объединить эти две ид
    Anonymous » » в форуме C#
    0 Ответы
    95 Просмотры
    Последнее сообщение Anonymous
  • Как получить все ожидающие задачи цикла событий в Python/FastAPI?
    Гость » » в форуме Python
    0 Ответы
    56 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»