Чи є хороший простий метод затримки виклику функції, дозволяючи потоку продовжувати виконуватись?
напр
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
}
Я знаю, що цього можна досягти за допомогою таймера та обробників подій, але мені було цікаво, чи існує стандартний спосіб # # для досягнення цього?
Якщо комусь цікаво, причиною цього є те, що foo () і bar () знаходяться в різних (одиночних) класах, і мені потрібно телефонувати один одному у виняткових обставинах. Проблема полягає в тому, що це робиться при ініціалізації, тому foo повинен викликати bar, якому потрібен екземпляр створюваного класу foo ... отже, відкладений виклик bar (), щоб переконатися, що foo повністю інстанційований. майже присмаки поганого дизайну!
РЕДАГУВАТИ
Я зважатиму на думки щодо поганого дизайну! Я давно думав, що зможу вдосконалити систему, однак ця неприємна ситуація виникає лише тоді, коли створюється виняток, у будь-який інший час два синглони дуже добре співіснують. Я думаю, що я не збираюся спілкуватися з неприємними асинхронними скоромовками, скоріше, я буду рефакторизувати ініціалізацію одного з класів.