لماذا الدعوة إلى التعليمات البرمجية غير المدارة من موضوع. NET BackgroundWorker تؤثر على واجهة المستخدم؟

StackOverflow https://stackoverflow.com/questions/283241

  •  08-07-2019
  •  | 
  •  

سؤال

ولدي سلسلة طويلة من عمليات تشغيل في موضوع BackgroundWorker Framework 2.0. عندما أقوم بإجراء مكالمة إلى التعليمات البرمجية غير المدارة تقع في التجميع المشار إليه واجهة المستخدم غير المجمدة حتى اكتمال المكالمة.

لماذا هذا؟ يجب أن لا يكون جعل هذه المكالمات من موضوع BackgroundWorker؟


نعم، بل هو مكون COM ولكن لست متأكدا من كيفية معرفة ما إذا كان STA أم لا، وما هي الآثار المترتبة / قرار هي / هو. I جعل العديد من المكالمات إلى هذا المكون كنها ليست سوى تلك حيث ألاحظ UI أن تصبح لا تستجيب منذ فترة طويلة.

وهذه الدعوات استرداد البيانات من الخادم.

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

المحلول

وكنت قد حصلت على العلامة COM في السؤال - هل الدعوة إلى مكون COM؟ هو عنصر STA؟ إذا كان الأمر كذلك، فإنه قد يكون جيدا حشد العودة إلى القيام بعملها على موضوع UI بطريقة أو بأخرى. أنا أعترف بسهولة أنا بعيد كل البعد عن كونه خبيرا في الاشياء COM، لكنني لن يفاجأ إذا كانت هذه هي المشكلة.

وماذا يحدث إذا قمت بإجراء المكالمات من موضوع جديد التي قمت بإنشائها صراحة؟

نصائح أخرى

ونعم وأيضا، هل هذا يحدث مع كل التعليمات البرمجية غير المدارة أو مجرد عنصر أو API معينة؟ إذا كان واحد محدد، ما هو هذا التعليمات البرمجية غير المدارة تفعل؟

وأيضا، هل يمكن ببساطة التعليق الخروج التعليمات البرمجية الحالي في BackgroundWorker (كنت تقوم بتشغيل الحق RunWorkerAsync ...) ووضع النوم هناك. إذا أصبح واجهة المستخدم الرسومية لديك شيء لا تستجيب ما ليس صحيحا، وإلا فإنه هو الرمز الذي تتصل به كما يشير جون من يمكن أن يكون هذا هو الحال مع COM.

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