سؤال

هل يمكن لأي شخص أن يوصي بطريقة "نظيفة" لإغلاق خدمة WCF وواضيعه عند المستضاف في كائن ServiceHost؟

استدعاء ServiceHost.Close ()؛ لا يعمل عندما تؤكد الخدمة مؤشرات الترابط الأخرى:

هتافات،

روب

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

المحلول

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

على سبيل المثال، يمكن أن يكون لديك فئة تجمع موضوع مخصص تعطي كل مؤشر ترابط تفرج إشارة إلى حدث يشير إليه أنه يجب أن يتوقف عن المعالجة والإغلاق. .NET 4.0 سوف يجعل هذا أبسط مع مكتبة المهام، ولكن في الوقت نفسه سوف تضطر إلى القيام بذلك بمفردك.

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

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