petushok55
@petushok55
Обучаюсь на практике.

Почему при сворачивании игры, async останавливает цикл?

private async void PingSender(CancellationToken token) /**пингую, чтоб сервак не отрубил меня */
    {
        while (true)
        {
            if (token.IsCancellationRequested)
            {
                Debug.Log("пинг остановился! (из-за токена)");
                throw new OperationCanceledException(token);
            }
            Send("{\"action\":\"sendPing\"}");
            await Task.Delay(1500);
        }
    }


Если свернуть игру, то цикл перестаёт выполняться, если обратно открыть вкладку с игрой, то продолжается цикл.
В чём дело то?

Есть ещё вот такая хрень, которая токен отменяет при выходе из игры, но вряд ли дело в этом
private void OnApplicationQuit()
    {
        _cts.Cancel();
    }


Помогите пожалуйста
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
@NickNamee
Update ни при чём.
асинхронные операции выполняются независимо он бехейвера.
Даже после его уничтожения будет продолжаться выполнение.

Вам нужно в настройках приложения включить флаг - выполнение в свёрнутом режиме.
Run in Background
https://docs.unity3d.com/520/Documentation/Manual/...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы