kaedah segerak dan asynchronous panggilan:
dan pilih Invoke()
BeginInvoke()
Kunci untuk pengaturcaraan yang cekap adalah untuk memahami perbezaan halus antara kaedah yang sama.
Invoke()
BeginInvoke()
dan
Invoke()
Kaedah ini direka untuk melaksanakan kaedah pada benang yang sama dengan pemanggil untuk melakukan operasi secara serentak. Ini bermakna benang panggilan akan menunggu sebelum kaedah kelulusan selesai. BeginInvoke()
sebaliknya, operasi asynchronous. Ia dipanggil pada benang yang berasingan (biasanya benang di kolam benang). Perlu diingat bahawa mengembalikan objek
Invoke()
dan BeginInvoke()
BeginInvoke()
IAsyncResult
3
: Kaedah pelaksanaan segerak dan tunggu ia selesai. Kaedah ini boleh digunakan apabila keputusan perlu dilaksanakan dan diambil dengan segera. Invoke()
BeginInvoke()
Delegate.Invoke()
3
Delegate.BeginInvoke()
Delegate.Invoke()
: Kaedah dilaksanakan pada thread GUI, tetapi ia tidak menunggu untuk diselesaikan. Ini sangat berguna untuk mengemas kini UI tanpa menjejaskan pelaksanaan pihak panggilan.
Pertimbangan lain: Objek Thread dan Delegate.BeginInvoke()
pada komisen. Kedua -dua kaedah dibenarkan untuk melaksanakan kod yang tidak segerak pada benang berasingan. Walau bagaimanapun, biasanya lebih popular kerana kesederhanaan dan pengurusan kolam benang automatiknya.
Control.Invoke()
Kesimpulan Control.BeginInvoke()
Atas ialah kandungan terperinci Invoke () vs BeginInvoke (): Bilakah menggunakan panggilan kaedah segerak dan asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!