Có một phương pháp đơn giản hay ho nào để trì hoãn một cuộc gọi hàm trong khi vẫn cho phép luồng tiếp tục thực thi không?
ví dụ
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
}
Tôi biết rằng có thể đạt được điều này bằng cách sử dụng bộ hẹn giờ và trình xử lý sự kiện, nhưng tôi tự hỏi liệu có cách c # tiêu chuẩn nào để đạt được điều này không?
Nếu ai đó tò mò, lý do yêu cầu điều này là foo () và bar () nằm trong các lớp (singleton) khác nhau mà tôi cần phải gọi nhau trong những trường hợp đặc biệt. Vấn đề là điều này được thực hiện khi khởi tạo vì vậy foo cần gọi thanh cần một thể hiện của lớp foo đang được tạo ... do đó, lệnh gọi đến bar () bị trì hoãn để đảm bảo rằng foo được cài đặt hoàn toàn .. Đọc lại phần này gần như thiết kế xấu!
BIÊN TẬP
Tôi sẽ đưa ra những điểm về thiết kế xấu theo lời khuyên! Từ lâu, tôi đã nghĩ rằng mình có thể cải thiện hệ thống, tuy nhiên, tình huống khó chịu này chỉ xảy ra khi một ngoại lệ được ném ra, ở những thời điểm khác, hai singleleton cùng tồn tại rất độc đáo. Tôi nghĩ rằng tôi sẽ không gặp rắc rối với những người bảo vệ không đồng bộ khó chịu, thay vào đó tôi sẽ cấu trúc lại quá trình khởi tạo của một trong các lớp.