Yani, bir şey beni C # 5'deki yeni async desteği hakkında rahatsız ediyor:
Kullanıcı zaman uyumsuz işlemi başlatan bir düğmeye basar. Çağrı hemen geri döner ve mesaj pompası tekrar çalışmaya başlar - bütün mesele budur.
Böylece kullanıcı düğmeye tekrar basabilir ve yeniden girişe neden olabilir. Ya bu bir sorunsa?
Gördüğüm demolarda, await
aramadan önce düğmeyi devre dışı bırakır ve daha sonra tekrar etkinleştirir. Bu bana gerçek dünyadaki bir uygulamada çok kırılgan bir çözüm gibi geliyor.
Belirli bir çalışan işlem kümesi için hangi kontrollerin devre dışı bırakılması gerektiğini belirten bir tür durum makinesini kodlamalı mıyız? Yoksa daha iyi bir yol var mı?
Sadece operasyon süresi boyunca kalıcı bir diyalog göstermeye cazipim, ama bu biraz balyoz kullanmak gibi geliyor.
Parlak fikirleri olan var mı, lütfen?
DÜZENLE:
Bir işlem çalışırken kullanılmaması gereken denetimleri devre dışı bırakmanın kırılgan olduğunu düşünüyorum çünkü üzerinde birçok denetime sahip bir pencereniz olduğunda hızla karmaşık hale geleceğini düşünüyorum. İşleri basit tutmayı seviyorum çünkü hem ilk kodlama hem de sonraki bakım sırasında hata olasılığını azaltır.
Belirli bir işlem için devre dışı bırakılması gereken bir kontrol koleksiyonu varsa ne olur? Peki ya birden fazla işlem aynı anda çalışıyorsa?