هل يؤثر تغيير ثقافة موضوع Threadpool عليه عند إرجاعه إلى المسبح؟

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

سؤال

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

آمل أن يعيد الإطار إعادة تعيين الخيط إلى حالة افتراضية للحماية ضد هذا، ولكن لا يمكن العثور على أي وثائق لهذا التأثير. الأقرب الذي وجدته هو من مستندات MSDN ل تجمع موضوع:

عندما يقوم تجمع الخيط بإعادة شحن سلسلة مؤشر ترابط، فإنه لا يزيل البيانات في التخزين المحلي في مؤشر الترابط أو في الحقول التي تتميز بسمة ThreadStaticattribute. لذلك، يمكن التعرض للبيانات التي يتم وضعها في تخزين محلي مؤشر ترابط من قبل طريقة واحدة لأي طريقة أخرى يتم تنفيذها بواسطة مؤشر ترابط تجمع مؤشر الترابط نفسه.

يبدو أن هذا يشير إلى أن الخيط هو ليس إعادة تعيين عند إرجاعه.

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

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

المحلول

لن أعتمد على Threadpool أبدًا إعادة تعيين المعلومات، خصيصا بسبب النص الذي نقلته.

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

لا أعتقد أن الحنفيات الحالية يفعل هذا، ولكن حتى لو كان ذلك فعل, ، لن يكون من الآمن افتراض أن تطبيق Threadpool .NET 4 + لن يتغير.

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