Есть ли хороший простой способ отложить вызов функции, позволяя потоку продолжать выполнение?
например
public void foo()
{
// Do stuff!
// Delayed call to bar() after x number of ms
// Do more Stuff
}
public void bar()
{
// Only execute once foo has finished
}
Я знаю, что этого можно достичь с помощью таймера и обработчиков событий, но мне было интересно, есть ли стандартный способ C # для этого?
Если кому-то интересно, причина, по которой это требуется, заключается в том, что foo () и bar () находятся в разных (одноэлементных) классах, которые мне нужно вызывать друг друга в исключительных обстоятельствах. Проблема в том, что это делается при инициализации, поэтому foo должен вызвать bar, которому нужен экземпляр класса foo, который создается ... отсюда отложенный вызов bar (), чтобы гарантировать, что foo полностью создан. почти попахивает плохим дизайном!
РЕДАКТИРОВАТЬ
Я приму к сведению замечания о плохом дизайне! Я долго думал, что смогу улучшить систему, однако эта неприятная ситуация возникает только тогда, когда генерируется исключение, во всех остальных случаях два синглтона сосуществуют очень хорошо. Думаю, я не собираюсь возиться с неприятными асинхронными шаблонами, скорее я собираюсь провести рефакторинг инициализации одного из классов.