Existe-t-il une méthode simple et agréable pour retarder un appel de fonction tout en laissant le thread continuer à s'exécuter?
par exemple
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
}
Je suis conscient que cela peut être réalisé en utilisant un minuteur et des gestionnaires d'événements, mais je me demandais s'il existe un moyen c # standard pour y parvenir?
Si quelqu'un est curieux, la raison pour laquelle cela est nécessaire est que foo () et bar () sont dans des classes (singleton) différentes que j'ai besoin de s'appeler dans des circonstances exceptionnelles. Le problème étant que cela se fait à l'initialisation, donc foo doit appeler bar qui a besoin d'une instance de la classe foo qui est en cours de création ... d'où l'appel retardé à bar () pour s'assurer que foo est complètement instancié. sent presque le mauvais design!
ÉDITER
Je prendrai les points sur la mauvaise conception en délibéré! J'ai longtemps pensé que je pourrais être en mesure d'améliorer le système, cependant, cette situation désagréable ne se produit que lorsqu'une exception est levée, à tous les autres moments, les deux singletons coexistent très bien. Je pense que je ne vais pas me mêler de vilains patters asynchrones, je vais plutôt refactoriser l'initialisation d'une des classes.