มีวิธีง่ายๆที่ดีในการหน่วงเวลาการเรียกใช้ฟังก์ชันในขณะที่ปล่อยให้เธรดดำเนินการต่อไปหรือไม่?
เช่น
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
}
ฉันทราบว่าสามารถทำได้โดยใช้ตัวจับเวลาและตัวจัดการเหตุการณ์ แต่ฉันสงสัยว่ามีวิธี c # มาตรฐานในการบรรลุสิ่งนี้หรือไม่?
ถ้าใครอยากรู้อยากเห็นเหตุผลที่ต้องมีก็คือ foo () และ bar () อยู่ในคลาส (singleton) ที่แตกต่างกันซึ่งฉันต้องการเรียกกันและกันในสถานการณ์พิเศษ ปัญหาที่เกิดขึ้นเมื่อ initialisation ดังนั้น foo จึงต้องเรียก bar ซึ่งต้องการอินสแตนซ์ของคลาส foo ที่กำลังสร้างขึ้น ... ด้วยเหตุนี้การโทรไปยัง bar () ที่ล่าช้าเพื่อให้แน่ใจว่า foo ได้รับการอินสแตนซ์อย่างสมบูรณ์ ... อ่านด้านหลังนี้ เกือบตีดีไซน์ไม่ดี!
แก้ไข
ฉันจะนำประเด็นเกี่ยวกับการออกแบบที่ไม่ดีภายใต้คำแนะนำ! ฉันคิดมานานแล้วว่าฉันจะสามารถปรับปรุงระบบได้อย่างไรก็ตามสถานการณ์ที่น่ารังเกียจนี้จะเกิดขึ้นก็ต่อเมื่อมีข้อยกเว้นเกิดขึ้นในบางครั้งเสื้อกล้ามทั้งสองก็อยู่ร่วมกันได้อย่างดีเยี่ยม ฉันคิดว่าฉันจะไม่ยุ่งกับ async-patters ที่น่ารังเกียจ แต่ฉันจะปรับเปลี่ยนการเริ่มต้นของคลาสใดคลาสหนึ่ง