¿Existe un método simple y agradable para retrasar una llamada a una función mientras se deja que el hilo continúe ejecutándose?
p.ej
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
}
Soy consciente de que esto se puede lograr mediante el uso de un temporizador y controladores de eventos, pero me preguntaba si existe una forma estándar de C # para lograrlo.
Si alguien tiene curiosidad, la razón por la que esto es necesario es que foo () y bar () están en clases diferentes (singleton) que necesito llamar entre sí en circunstancias excepcionales. El problema es que esto se hace en la inicialización, por lo que foo necesita llamar a bar, que necesita una instancia de la clase foo que se está creando ... de ahí la llamada retardada a bar () para garantizar que foo esté completamente instanciado. ¡Casi huele a mal diseño!
EDITAR
¡Tomaré en cuenta los puntos sobre el mal diseño! Durante mucho tiempo pensé que podría mejorar el sistema, sin embargo, esta desagradable situación solo ocurre cuando se lanza una excepción, en todas las demás ocasiones los dos singleton coexisten muy bien. Creo que no voy a dar vueltas con patrones asincrónicos desagradables, sino que voy a refactorizar la inicialización de una de las clases.