Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melewati Parameter ke Kaedah ThreadStart dalam C#?

Bagaimanakah Saya Boleh Melewati Parameter ke Kaedah ThreadStart dalam C#?

DDD
DDDasal
2025-01-07 08:02:10657semak imbas

How Can I Pass Parameters to a ThreadStart Method in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn