В Scala существует класс Promise, который может быть использован для завершения Будущего вручную. Я ищу альтернативу в С#.
Я пишу тест, и я хочу, чтобы он выглядел примерно так:
// var MyResult has a field `Header`
var promise = new Promise<MyResult>;
handlerMyEventsWithHandler( msg =>
promise.Complete(msg);
);
// Wait for 2 seconds
var myResult = promise.Future.Await(2000);
Assert.Equals("my header", myResult.Header);
Я понимаю, что это, вероятно, не правильный шаблон для С#, но я не мог найти разумный способ добиться того же самого даже с несколько иным шаблоном.
РЕДАКТИРОВАТЬ: обратите внимание, что async
/await
здесь не помогает, так как у меня нет задачи, ожидающей! Я просто имею доступ к обработчику, который будет запущен в другом потоке.