سؤال

إذا كنت لا تهتم بقراءة النص بالكامل ، فيمكنك التخطي إلى النقطتين الأخيرتين: p

لقد ساعدني هذا الموقع عشرات المرات في الماضي ، لكنني الآن بحاجة إلى المساعدة بنفسي.

المشكلة كما يلي:

  • استخدمت أولاً وظيفة DownloadFile مع خيار إظهار واجهة المستخدم. نجح هذا بشكل رائع ، ولكن واجهة المستخدم قبيحة ولا تتوفر العديد من الخيارات.

  • ثم قمت بالتبديل إلى DownloadFileAsync مع حدث التقدم الذي تم تغييره من أجل الحصول على واجهة المستخدم الخاصة بي بشكل أساسي. المشكلة الوحيدة التي أواجهها هي أنني أقوم بالتكرار من خلال قائمة الملفات التي يتعين على البرنامج تنزيلها واستدعاء وظيفة التنزيل (التي تستدعي وظيفة DownloadAsync). مثل هذا: genacodicetagpre

  • ولكن من الواضح أن هذا لم ينجح ، لأن وظيفة DownloadFileAsync لا تدعم مكالمات متعددة في نفس الوقت لأنه لا يوجد نظام قائمة انتظار مثل نظام DownloadFile ، لذلك سيتم تنزيل الملف الأول فقط. لذا فإن ما فعلته هو إنشاء وظيفة تضيف الملف المراد تنزيله إلى مصفوفة ولها حلقة عمل خلفية عبر القائمة وانتظر استدعاء DownloadAsync حتى يكتمل التنزيل السابق. هذا العمل كيندا. ها هو الكود: genacodicetagpre

  • لذا فإن مشكلتي التالية هي أن البرنامج يجب أن ينتظر تنفيذ أي كود آخر حتى تنتهي التنزيلات. فعلت ذلك من خلال: genacodicetagpre

  • من الواضح أن هذا ليس هو الحل الأفضل حيث يمكنهم النقر فوق أشياء أخرى أثناء انشغال التنزيلات ، ولكن نعم ، فإن Thread.Sleep سيؤدي إلى تجميد كل شيء. بدلاً من ذلك ، سأقوم بعمل نموذج انتظار (ربما هنا شريط تقدم بدلاً من النموذج الرئيسي) مع التركيز عليه أعلى النموذج الرئيسي ، لذلك لا يمكنهم النقر فوق النموذج الرئيسي ووضع مؤشر ترابط. ؟

  • كيف تحل هذا؟ هل يمكنك أيضًا استخدام عامل الخلفية الذي يتنقل عبر صفيف الملفات أم أن هناك طريقة أسهل وأكثر كفاءة. ربما لا تستخدم DownloadFileAsync ، ولكن التنزيل اليدوي من خلال المقبس؟

  • ما أريده أساسًا هو تنزيل الملفات بشكل متزامن ، ولكن لدي واجهة مستخدم خاصة بي (لذا أحتاج إلى استخدام وظائف تنزيل غير متزامنة). هههه

أتمنى أن أكون قد أبلغتك بما فيه الكفاية. شكرا مقدما.

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

المحلول

استخدم مربع حوار مشروط ، ربما تضيف شريط تقدم للإشباع البصري ، لإعلام المستخدم بأن العملية تعمل.

بهذه الطريقة يمكنك إجراء تنزيل غير متزامن دون السماح بالتفاعل مع عناصر تحكم النموذج الرئيسي.

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