Всем привет ! Класс Main вызывает метод PlayDelay, на Func подписаны несколько методов Run из нескольких экземпляров класса A с разной задержкой по времени, хочу что бы PlyDelay подождал все методы Run (как через UniTask.WhenAll()) Возможно ли реализовать то, что я написал ниже ? Предложите как сделать что-то похожее. Можно с использованием обычных Task
P.S Просто любопытно как такое сделать.
public class Main
{
public Func<CancellationToken, UniTask> Func;
private CancellationTokenSource _tokenSource;
public async void PlayDelay()
{
_tokenSource = new CancellationTokenSource();
var uniTask = Func?.Invoke(_tokenSource.Token);
await uniTask.GetValueOrDefault();
}
}
public class A
{
private Main _main;
private float _delay;
private void OnEnable()
{
_main.Func += Run;
}
private void OnDisable()
{
_main.Func -= Run;
}
public async UniTask Run(CancellationToken token)
{
await UniTask.Delay(TimeSpan.FromSeconds(_delay), cancellationToken: token);
}
}