Arka plan iş parçacığında oldukça titiz hesaplamalar gerçekleştiren bir masaüstü uygulamasına sahibiz. Bu hesaplamanın bölümleri, birlikte çalışma yoluyla eriştiğimiz yönetilmeyen bir kütüphanede gerçekleştirilir. Bulduğumuz şey, hesaplamayı başlattığımızda, UI iş parçacığı hesaplamanın süresi boyunca yanıt vermemesidir. Çerçevenin, UI'nin yanıt vermeye devam etmesine izin vermek için iş parçacığı değiştirme işlemiyle ilgileneceği izlenimi altındaydık, ancak durum böyle değil. UI'nin duyarlı olmasını sağlamak için bir Thread.Sleep (0) veya Application.DoEvents() ekleyebileceğimizi tespit ettik. Bu, hesaplamayı yavaşlatmanın yan etkisine sahiptir. Ayrıca, yönetilmeyen kod tarafından gerçekleştirilen hesaplamanın bölümlerinin tamamlanması 30 saniyeye kadar sürebilir ve bu süre boyunca uygulama her zaman yanıt vermez. Tüm hesaplama, iki ila beş dakika arasında tamamlanabilir..NET Threading Modeli ve Uygulaması.DoEvents vs. Thread.Sleep
Bu şu sorulara yol açar:
- UI ve birlikte çalışma konusunda .NET framework iş parçacığı modeli nedir?
- Çerçevenin arka plan ve kullanıcı arabirimi iş parçacıkları arasında iş parçacığı arasında geçiş yapması gerektiğini varsayarak yanlış mıyız?
- Bu durumda Thread.Sleep ve Application.DoEvents kullanımı arasındaki fark nedir ve diğeri üzerinde tercih edilen nedir?
NOT: Çok eski Q & A; bugün mevcut çözümlerle ilgili iyi yanıtlar almak için yeni tartışmalar araştırın. – ToolmakerSteve