Apakah ada metode sederhana yang bagus untuk menunda panggilan fungsi sambil membiarkan utas terus berjalan?
misalnya
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
}
Saya sadar bahwa ini dapat dicapai dengan menggunakan timer dan event handler, tapi saya bertanya-tanya apakah ada cara c # standar untuk mencapai ini?
Jika ada yang penasaran, alasan mengapa hal ini diperlukan adalah karena foo () dan bar () berada dalam kelas (tunggal) yang berbeda yang saya perlukan untuk memanggil satu sama lain dalam keadaan luar biasa. Masalahnya adalah hal ini dilakukan saat inisialisasi sehingga foo perlu memanggil bar yang membutuhkan turunan dari kelas foo yang sedang dibuat ... oleh karena itu panggilan tertunda ke bar () untuk memastikan bahwa foo sepenuhnya dijalankan .. Membaca ini kembali hampir mirip dengan desain yang buruk!
EDIT
Saya akan mengambil poin tentang desain yang buruk di bawah saran! Saya sudah lama berpikir bahwa saya mungkin dapat meningkatkan sistem, namun, situasi buruk ini hanya terjadi ketika pengecualian dilemparkan, di lain waktu kedua lajang hidup berdampingan dengan sangat baik. Saya pikir saya tidak akan mengacaukan async-patters yang buruk, melainkan saya akan melakukan refactor inisialisasi salah satu kelas.