Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melewati Parameter ke Kaedah ThreadStart dalam C#?
Melalui Parameter ke Kaedah ThreadStart dalam C#
Dalam C#, kaedah ThreadStart ialah perwakilan yang mentakrifkan gelagat pelaksanaan thread. Walau bagaimanapun, menghantar parameter kepada kaedah ini boleh menimbulkan cabaran.
Sebagai contoh, pertimbangkan kod berikut di mana kami cuba menghantar parameter kepada kaedah "muat turun":
public void download(string filename) { // download code } Thread thread = new Thread(new ThreadStart(download(filename));
Kod ini akan mengakibatkan ralat "jenis kaedah dijangka". Untuk lulus parameter dengan berkesan, pertimbangkan pendekatan berikut:
Menggunakan Ungkapan Lambda Tanpa Nama:
Penyelesaian paling mudah ialah menggunakan ungkapan lambda tanpa nama secara langsung dalam pembina ThreadStart:
string filename = ... Thread thread = new Thread(() => download(filename)); thread.Start();
Pendekatan ini membenarkan berbilang parameter dihantar masuk, dan ia menyediakan masa kompilasi menyemak tanpa perlu menghantar daripada "objek."
Menggunakan ParameterizedThreadStart:
Sebagai alternatif, anda boleh menggunakan perwakilan ParameterizedThreadStart, ditakrifkan seperti berikut:
public delegate void ParameterizedThreadStart(object obj);
Ini membolehkan anda menghantar satu parameter objek ke benang:
ParameterizedThreadStart threadStart = new ParameterizedThreadStart(download); Thread thread = new Thread(threadStart); thread.Start(filename);
Melalui Berbilang Parameter:
Untuk senario di mana berbilang parameter perlu diluluskan, jenis atau teknik perwakilan tersuai seperti menangkap pembolehubah melalui penutupan boleh digunakan . Walau bagaimanapun, pendekatan ekspresi lambda tanpa nama biasanya lebih disukai kerana kesederhanaan dan kemudahannya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melewati Parameter ke Kaedah ThreadStart dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!