Gibt es eine nette einfache Methode, um einen Funktionsaufruf zu verzögern, während der Thread weiter ausgeführt wird?
z.B
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
}
Ich bin mir bewusst, dass dies mit einem Timer und Ereignishandlern erreicht werden kann, aber ich habe mich gefragt, ob es einen Standardweg gibt, um dies zu erreichen.
Wenn jemand neugierig ist, ist der Grund dafür, dass foo () und bar () in verschiedenen (Singleton-) Klassen sind, die ich unter außergewöhnlichen Umständen gegenseitig aufrufen muss. Das Problem ist, dass dies bei der Initialisierung erfolgt, sodass foo bar aufrufen muss, das eine Instanz der erstellten foo-Klasse benötigt ... daher der verzögerte Aufruf von bar (), um sicherzustellen, dass foo vollständig instanziiert ist. Lesen Sie dies zurück fast riecht nach schlechtem Design!
BEARBEITEN
Ich werde die Punkte über schlechtes Design unter Hinweis nehmen! Ich habe lange gedacht, dass ich das System verbessern könnte, aber diese schlimme Situation tritt nur auf, wenn eine Ausnahme ausgelöst wird, zu allen anderen Zeiten existieren die beiden Singletons sehr gut nebeneinander. Ich denke, ich werde mich nicht mit fiesen Async-Mustern herumschlagen, sondern die Initialisierung einer der Klassen umgestalten.
Awake
und Start
Phasen. In der Awake
Phase konfigurieren Sie sich selbst und am Ende dieser Phase werden alle Objekte initialisiert. Während der Start
Phase können die Objekte miteinander kommunizieren.