Existe um método simples e agradável de atrasar uma chamada de função enquanto permite que o thread continue em execução?
por exemplo
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
}
Estou ciente de que isso pode ser feito usando um cronômetro e manipuladores de eventos, mas gostaria de saber se existe uma maneira c # padrão de fazer isso.
Se alguém estiver curioso, isso é necessário porque foo () e bar () estão em classes diferentes (singleton) que precisam ser chamadas em circunstâncias excepcionais. O problema é que isso é feito na inicialização, então foo precisa chamar bar, que precisa de uma instância da classe foo que está sendo criada ... daí a chamada atrasada para bar () para garantir que foo esteja totalmente instanciado .. Lendo isso de volta quase cheira a um design ruim!
EDITAR
Vou levar em consideração os pontos sobre design ruim! Há muito tempo pensei que poderia melhorar o sistema, entretanto, essa situação desagradável só ocorre quando uma exceção é lançada, em todas as outras vezes os dois singletons coexistem muito bem. Acho que não vou mexer com padrões assíncronos desagradáveis, em vez disso, vou refatorar a inicialização de uma das classes.