İş parçacığının yürütülmeye devam etmesine izin verirken bir işlev çağrısını geciktirmenin güzel ve basit bir yöntemi var mı?
Örneğin
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
}
Bunun bir zamanlayıcı ve olay işleyicileri kullanılarak elde edilebileceğinin farkındayım, ancak bunu başarmanın standart bir c # yolu olup olmadığını merak ediyordum.
Meraklı biri varsa, bunun gerekli olmasının nedeni foo () ve bar () 'ın istisnai durumlarda birbirlerini çağırmam gereken farklı (tekli) sınıflarda olmasıdır. Sorun şu ki, bunun başlatmada yapılması, bu yüzden foo'nun, oluşturulan foo sınıfının bir örneğine ihtiyaç duyan bar'ı çağırması gerekiyor ... bu nedenle, foo'nun tam olarak yerleşik olmasını sağlamak için bar () 'a gecikmeli çağrı. neredeyse kötü tasarım kokusu!
DÜZENLE
Kötü tasarımla ilgili noktaları tavsiye altında alacağım! Uzun zamandır sistemi geliştirebileceğimi düşündüm, ancak bu kötü durum sadece bir istisna atıldığında ortaya çıkıyor, diğer tüm zamanlarda iki singleton çok güzel bir şekilde bir arada var oluyor. Kötü eşzamansız kalıplarla uğraşmayacağımı düşünüyorum, bunun yerine sınıflardan birinin ilklendirmesini yeniden düzenleyeceğim.