разве не тот-же спинвейт?
нет, там под капотом создается таймер, который после завершения дергает коллбек, который выставляет Complete статус на таске
хотя "создается таймер" тут не совсем корректно
Вот так норм? public bool Invoke(int timeout, object caller, EventArgs e) { var asyncResult = eventHandler.BeginInvoke(caller, e, null, null); var invokeTask = Task.Factory.FromAsync(asyncResult, (result) => { }); var timeoutTask = Task.Delay(timeout); var agreationTask = Task.WhenAny(invokeTask, timeoutTask); agreationTask.RunSynchronously(); return asyncResult.IsCompleted; (eventHandler - поле класса, в котором происходит дело)
даже запустил, падает сразу на попытке вызвать RunSynchronously. у тебя это вообще работает? у меня просто есть сомнения, что это законно
Тут (и в интернете) столько предложений что я не успеваю все опробовать. Изивняюсь(
c Task.WaitAny кстати работает
Окей, а вот теперь уже интересно.
Обсуждают сегодня