मैं archetypal FileSystemWatcher समाधान को लागू करने वाला हूं। मेरे पास फ़ाइल निर्माण के लिए निगरानी करने के लिए एक निर्देशिका है, और बनाई गई फ़ाइलों को चूसने और डीबी में डालने का कार्य है। लगभग इसमें 6 या 7, 80 चार टेक्स्ट फाइलें पढ़ने और प्रसंस्करण शामिल होंगी जो कि प्रत्येक दो सेकंड में होने वाली विस्फोटों में 150 एमएस की दर से दिखाई देती हैं, और शायद ही कभी 2 एमबी बाइनरी फाइल को संसाधित करना होगा। यह सबसे अधिक संभावना 24/7 प्रक्रिया होगी।FileSystemWatcher आग के बाद - थ्रेड पूल या समर्पित धागा?
जो मैंने फाइलसिस्टम वाटर ऑब्जेक्ट के बारे में पढ़ा है, उससे बेहतर है कि इसकी घटनाओं को एक थ्रेड में डालें और फिर उन्हें किसी अन्य थ्रेड में निकालें/संसाधित करें। मेरे पास अभी मौजूद विवाद यह है कि प्रसंस्करण करने वाले थ्रेड का बेहतर निर्माण तंत्र क्या होगा। विकल्प मैं देख सकता हैं:
हर बार जब मैं मैं मैन्युअल रूप से एक नया धागा बनाने के एक FSW घटना मिलता है (हाँ मैं जानता हूँ कि .. बेवकूफ वास्तुकला, लेकिन मैं यह कहना था)।
, जब भी मैं एक FSW घटना
शुरू पर मिल थ्रेड पूल CLR पर प्रसंस्करण फेंक प्रसंस्करण के लिए एक समर्पित दूसरा धागा बना सकते हैं और काम संभालने के लिए एक निर्माता/उपभोक्ता मॉडल का उपयोग करें। मुख्य धागा अनुरोध को घेरता है और दूसरा धागा इसे हटा देता है और काम करता है।
मैं वरीय एक के रूप में तीसरी विधि की ओर प्रवृत्त कर रहा हूँ के रूप में मैं जानता हूँ कि काम धागा हमेशा की आवश्यकता होगी - और यह भी शायद और अधिक इसलिए है क्योंकि मैं थ्रेड पूल के लिए कोई महसूस की है।
+1, मैं जोड़ता हूं कि थ्रेड पूल का उपयोग करके कई अनुरोधों पर एक साथ अपने अनुरोधों को आजमाया जाएगा और आपके आवेदन के लिए अच्छी चीज की तरह नहीं लगता है। –
Anon .. मैंने जो परीक्षण किया है, उससे मेरी प्रसंस्करण अच्छी तरह से और सचमुच 150 एमएस में बाइनरी फाइल प्रोसेसिंग के मामले में छोड़ दी जानी चाहिए - जो लगभग 150 एमएस पर चलती है लेकिन ऐसी दुर्लभ घटना होनी चाहिए कि वहां बहुत सारे होंगे चीजें कतारबद्ध होने पर पकड़ने का समय। –