سؤال

لدي مشكلة غريبة لست متأكدًا جدًا من كيفية إصلاح أو معالجة. أنا أكتب تطبيق Mini Text Editor Application - محرر RichTextBox.

أحتاج إلى القيام ببعض التحليل المعقد بعد تغيير التحديد - تحديث الموضع ، ونص التحديد والعديد من البتات الأخرى حول سياق النص حول المنطقة.

نظرًا لأن الأمر يتطلب القليل من المعالجة ، فأنا لا أريد إطلاقه في كل مرة يتغير فيها التحديد إذا تم التمرير للمستخدم بمفاتيح الأسهم الخاصة بهم. فكرت في استخدام application.idle ، لكنه يطلق النار بانتظام. جربت مؤقتًا ، لكنه قد يطلق النار بينما لا تزال سهام الاختيار تتحرك.

ما كنت أفكر فيه هو نوع من المؤقت العد التنازلي الذي من شأنه إعادة ضبط المؤقت في كل مرة يقوم فيها SelectBox Richtextbox بتعيين عمليات تحديد الحدث ، ثم عندما يصل المؤقت 500 مللي ثانية أو 1000 مللي ثانية ، فإنه سيقوم بتنفيذ عمليات المعالجة المعقدة.

هل هذا يبدو وكأنه فكرة جيدة؟

هل كانت مفيدة؟

المحلول

ربما يجب أن تبدأ معالجتك في موضوع خاص عندما يستغرق وقتا طويلا. بمجرد حصولك على مدخلات جديدة ، يمكنك إيقاف الحساب السابق والبدء بالمعلومات الجديدة مرة أخرى (لذا ضع في اعتبارك آلية إلغاء لخيطك).

عند الانتهاء من موضوعك ، يتعين عليك التحقق مما إذا كانت نتائجه صالحة (لم يتغير Selecion في هذه الأثناء). أخيرًا ، يمكنك "مزامنة" نتائج الحساب إلى واجهة المستخدم الرسومية ، والتي نأمل أن تكون سريعة بما فيه الكفاية :)

هذا يعمل فقط ، عندما يكون هناك قدر معين من الحساب الذي يمكن القيام به دون الكتابة إلى واجهة المستخدم الرسومية ... لست متأكدًا مما إذا كان يمكنك تنفيذها بهذه الطريقة. ذلك يعتمد على نوع الحسابات الخاصة بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top