Jadi, ada sesuatu yang menggangguku tentang dukungan async baru di C # 5:
Pengguna menekan tombol yang memulai operasi async. Panggilan segera kembali dan pompa pesan mulai berjalan lagi - itulah intinya.
Jadi pengguna dapat menekan tombol lagi - menyebabkan masuknya kembali. Bagaimana jika ini masalah?
Dalam demo yang saya lihat, mereka menonaktifkan tombol sebelum await
panggilan dan mengaktifkannya lagi setelahnya. Bagi saya ini sepertinya solusi yang sangat rapuh dalam aplikasi dunia nyata.
Haruskah kita membuat kode semacam mesin negara yang menentukan kontrol mana yang harus dinonaktifkan untuk serangkaian operasi yang dijalankan? Atau ada cara yang lebih baik?
Saya tergoda untuk hanya menampilkan dialog modal selama operasi, tetapi ini terasa seperti menggunakan palu godam.
Adakah yang punya ide cemerlang?
EDIT:
Saya pikir menonaktifkan kontrol yang tidak boleh digunakan saat operasi sedang berjalan rapuh karena saya pikir itu akan cepat menjadi kompleks ketika Anda memiliki jendela dengan banyak kontrol di atasnya. Saya suka menjaga hal-hal sederhana karena mengurangi kemungkinan bug, baik selama pengkodean awal dan pemeliharaan selanjutnya.
Bagaimana jika ada kumpulan kontrol yang harus dinonaktifkan untuk operasi tertentu? Dan bagaimana jika beberapa operasi berjalan secara bersamaan?