यदि बफर आकार बढ़ाना पर्याप्त नहीं है और आप नियंत्रित नहीं कर सकते हैं कि एक बार में कितनी फ़ाइलें ट्रिगर कर रही हैं, आपको अतिरिक्त मतदान जोड़ना होगा।
यह आकर्षक बस बफर आकार बढ़ाने लेकिन यह सावधानी से किया जाना चाहिए करने के लिए हो सकता है। वास्तव में, जब नेटवर्क पहुंच की बात आती है तो 64k सीमा होती है।
आप बफर आकार को संशोधित करने की लागत पर एक गहरी समझ प्राप्त करना चाहते हैं तो आप Microsoft के वाल्टर वांग यहाँ के पद पर एक नजर है चाहिए:
FileSystemWatcher across the network (पूर्ण पोस्ट उद्धृत नीचे)
मुझे खेद है कि FileSystemWatcher.InternalBufferSize के प्रलेखन बफर आकार जब नेटवर्कनिगरानी के बारे में बहुत स्पष्ट राज्य नहीं था हूँपथ। नेटवर्क पथ की निगरानी करते समय यह सिफारिश की जाती है कि 64K से अधिक न हो।
FileSystemWatcher मूल रूप से एक है।Win32 ReadDirectoryChangesW API के लिए नेट रैपर। ReadDirectoryChangesW का उपयोग करने के लिए, आप बनाते हैं और एक बफर निर्दिष्ट करते हैं कि ओएस परिवर्तनों के साथ पॉप्युलेट करेगा। हालांकि, क्या ReadDirectoryChangesW प्रलेखन में उल्लेख नहीं है (लेकिन FileSystemWatcher डॉक्स में संकेत दिया है) कि फाइल सिस्टम जब तक यह अद्यतन करने के लिए मौका है परिवर्तन जानकारी अस्थायी रूप से स्टोर करने के लिए एक आंतरिक गिरी बफर बनाता है उपयोगकर्ता बफर का आकार जो कर्नेल बफर बनाया गया है ReadDirectoryChangesW में निर्दिष्ट एक ही आकार है और गैर-पेजेड पूल वाली मेमोरी में बनाया गया है। प्रत्येक बार एक फ़ाइल सिस्टम सिस्टम/ ReadDirectoryChangesW बनाया गया है/ कहा जाता है, एक नया कर्नेल बफर भी बनाया गया है।
कर्नेल स्मृति पूल (पृष्ठांकित और गैर-पृष्ठांकित) डिवाइस ड्राइवर और प्रयोग करने में अन्य कर्नेल घटकों के लिए प्रणाली पता स्थान में अलग सेट कर रहे हैं। वे आवश्यक रूप से गतिशील रूप से बढ़ते और घटते हैं। पूल का वर्तमान आकार पर कार्य प्रबंधक का प्रदर्शन टैब पर आसानी से देखा जा सकता है। पूल गतिशील रूप से बढ़ेगा जब तक कि वे अधिकतम मान को बूट करें, जिसे बूट समय पर गणना की जाती है और उपलब्ध सिस्टम संसाधनों (ज्यादातर रैम) पर निर्भर करता है। आप इस अधिकतम मान को हिट करना चाहते हैं या अन्य विभिन्न सिस्टम सेवाओं और ड्राइवर विफल होने लगेंगे। हालांकि, यह गणना की गई अधिकतम मान उपलब्ध नहीं है। अधिकतम पूल आकार निर्धारित करने के लिए, आपको कर्नेल डीबगर का उपयोग करने की आवश्यकता है। यदि आप सिस्टम मेमोरी पूल के बारे में अधिक जानकारी चाहते हैं, तो मैं अनुशंसा करता हूं कि आप एमएसपी्रेस पुस्तक में अध्याय 7 को देखें, सुलैमान द्वारा 0000 के अंदर और रसेलिनोविच।
इस बात को ध्यान में रखते हुए, कोई आकार बफर पर उपयोग करने की सिफारिश नहीं है। सिस्टम पूल के वर्तमान और अधिकतम आकार पर जा रहे हैं क्लाइंट से क्लाइंट में भिन्न हो। हालांकि, आपको शायद प्रत्येक फ़ाइलसिस्टम वाटर/ ReadDirectoryChangesW बफर के लिए 64k से अधिक पर नहीं जाना चाहिए। यह इस तथ्य से उत्पन्न होता है कि नेटवर्क एक्सेस के साथ 64k सीमा ReadDirectoryChangesW में प्रलेखित है। लेकिन अंत में आपको होने की संभावना है ताकि अपेक्षित लक्ष्य प्रणालियों के पर एप्लिकेशन का परीक्षण किया जा सके ताकि आप अपने बफर को ट्यून कर सकें।
वहाँ भूमि के ऊपर नेट अनुप्रयोगों के साथ जुड़ा हुआ है और मुझे लगता है कि एक Win32 ReadDirectoryChangesW कार्यक्रम एक ही बफर आकार के साथ बेहतर प्रदर्शन प्राप्त करने में सक्षम हो सकता है। हालांकि, बहुत तेजी से और कई फ़ाइल में परिवर्तन के साथ, बफर लगने अपरिहार्य हो जाएगा और डेवलपर एक उग आया तब होता है जब इस तरह के मैन्युअल रूप परिवर्तन का पता लगाने के लिए निर्देशिका की गणना मामले को संभाल करने के लिए जा रहा है।
अंत में, FileSystemWatcher और ReadDirectoryChangesW एक हल्के फ़ाइल परिवर्तन का पता लगाने तंत्र है कि इसके सीमाएं हैं करने के लिए जा रहा है। बदलें पत्रिकाओं एक और व्यवस्था है जिसके हम एक मध्यम वजन समाधान पर विचार करेगा है, लेकिन अभी भी सीमाएं हैं जाएगा:
http://msdn.microsoft.com/en-us/library/aa363798%28VS.85%29.aspx
भारी वजन समाधान एक समर्पित फ़ाइल सिस्टम फिल्टर चालक लिखने के लिए हो सकता है कि फ़ाइल सिस्टम में बैठता है और फ़ाइल सिस्टम परिवर्तनों की निगरानी करता है। बेशक यह सबसे जटिल दृष्टिकोण होगा। अधिकांश वायरस स्कैनर, बैकअप सॉफ्टवेयर, और फ़ाइल प्रणाली निगरानी उपयोगिताओं जैसे Filemon (www.sysinternals.com) एक फिल्टर चालक को लागू।
मुझे उम्मीद है कि स्पष्टीकरण से आपको समस्या समस्या का मूल कारण समझने में सहायता करता है। कृपया पर उत्तर दें हमें बताएं कि आपको और जानकारी चाहिए या नहीं। धन्यवाद।
बस एक छोटा सा अतिरिक्त: डिफ़ॉल्ट बफर आकार 8192. –