موضوع
موضوع خيوط الواجهة / المعالجة الدورية
صفحة موضوع تتيح تتبّع WPF / WinForms، وخيوط الواجهة (UI)، وasync/await، وDispatcher، واختيار المؤقّتات معًا.
لماذا يصعب هذا الموضوع
في WPF / WinForms، ما إن تختلط المعالجة غير المتزامنة وتحديث الواجهة والمعالجة الدورية حتى يصعب أن نرى أي عمل يجري على أي خيط. هذا الموضوع محطة جامعة لتتبّع تجمّد الواجهة والتحديث عبر الخيوط وحيرة اختيار المؤقّت بوصفها مجموعة واحدة.
- يصعب معرفة المكان الذي يعود إليه التنفيذ بعد
await - يختلط ما ينبغي تنفيذه في الواجهة بما ينبغي نقله إلى الخلفية
- مسؤوليات
DispatcherTimerوSystem.Threading.TimerوPeriodicTimerغير واضحة - يصعب تصوّر الشكل القابل للصيانة في WinForms / WPF
نقاط تتكرر كثيرًا في الاستشارات
- بقاء
.Result/.Wait()في الشيفرة يجعل الشاشة تتجمّد بسهولة - الحدّ بين
Task.Runوتحديث الواجهة غير واضح - تناثر التنفيذ الدوري يسبّب drift وتنفيذًا مكرّرًا
- الرغبة في تقليل الاعتماد على خيط الواجهة دون كسر مسؤوليات الشاشة
الأسلوب الأنسب
في هذا المجال، الأجدى عمليًا أن نرتّب خيط الواجهة والمعالجة الدورية معًا، بدل النظر إلى async / await وحدها أو إلى المؤقّتات وحدها.
وبالاطّلاع على مجموعة المقالات وصفحات الخدمات ذات الصلة معًا، يسهل أن نقرّر هل نبدأ من قرار التصميم أم من إصلاح التنفيذ.
اطلب استشارة
إذا كان ما تتعامل معه قريبًا من محتوى هذه الصفحة، يُرجى استشارتنا مع شرح الوضع الحالي ونوع الدعم الذي تحتاجه.