Peristiwa dimuat dan dijalankan pada utas utama, dan jika peristiwa pertama pada utas utama belum selesai, Anda datang ke peristiwa kedua, sama seperti program lain di utas utama, tunggu hingga yang sebelumnya selesai diproses sebelum memproses program atau peristiwa berikutnya atau lainnya di utas utama.
Di atas adalah, saya merangkum sebuah objek sendiri, dan dalam objek itu, saya merangkum sebuah peristiwa sendiri.
Saya memproses data dalam metode berlangganan peristiwa, seperti bagian anotasi gambar,
Karena peristiwa yang saya langgani adalah file txt baca, dan file txt saya memiliki 50.000 baris, menyebabkan metode peristiwa dipicu 50.000 kali.
Kemudian, ketika saya menjalankan program, saya menemukan bahwa antarmuka saya dalam keadaan animasi yang ditangguhkan, dan saya tahu bahwa pasti ada masalah di sana.
Awalnya saya mengira itu adalah manipulasi kontrol UI dalam metode yang menyebabkan kematian palsu.
Kemudian, selangkah demi selangkah, ditemukan bahwa saat menambahkan data ke set, itu sudah memasuki status animasi yang ditangguhkan.
Mengapa??? Akhirnya, saya mengetahui dari internet bahwa acara tersebut ada di utas utama, dan jika acara pertama tidak diproses, itu akan memblokir eksekusi acara berikutnya,
Saya umumnya mengerti apa yang saya perintahkan, terus terang, 50.000 peristiwa menyebabkan program diblokir, dan kemudian saya memasuki keadaan animasi yang ditangguhkan.
Larutan:
Untuk beberapa peristiwa sederhana, yang tidak akan mengarah pada eksekusi sejumlah besar metode peristiwa, dapat ditulis langsung ke dalam metode peristiwa.
Untuk sejumlah besar metode peristiwa yang dipanggil, saya harap Anda akan membuka utas untuk menanganinya, seperti: socket atau httplistener, dll. (jumlah datanya kecil dan Anda tidak dapat melihatnya, setelah jumlah data besar, haha, itu akan langsung mati)
|