2012-07-26 21 views
5

FileSystemWatcher.Error घटना के बाद उठाया गया, मुझे कोई फर्क नहीं पड़ता कि आगे क्या करना है। अपवाद एक [अपेक्षाकृत] नाबालिग से एक है, निर्देशिकाFileSystemWatcher त्रुटि से पुनर्प्राप्त करने का सबसे अच्छा अभ्यास क्या है?

जो द्रष्टा के देखने के प्रक्रिया को प्रभावित नहीं करता में एक ही बार में इस तरह के रूप

बहुत अधिक परिवर्तन हो सकता है, लेकिन यह भी एक बड़ा हो सकता है समस्या - जैसे देखे गए निर्देशिका को हटाया जा रहा है, इस मामले में दर्शक अब कार्यात्मक नहीं है।

मेरा प्रश्न त्रुटि घटना को संभालने का सबसे अच्छा तरीका क्या है?

+2

FileSystemWatcher का उपयोग करना बंद करें, यह अविश्वसनीय रूप से एक मतदान सेवा लिखना है। – saj

+0

मैं एक संशोधित फ़ाइलसिस्टम वाटर का उपयोग कर रहा हूं जो मूल दर्शक [अतिप्रवाह मुद्दों, डुप्लीकेट घटनाओं और नेटवर्क-पथ देखने] – Nissim

+0

के अधिकांश विश्वसनीयता मुद्दों को हल करता है या स्क्रीन पर प्रदर्शित होने और प्रदर्शित होने से पहले होने वाली किसी घटना पर फ़ाइलों की जांच करता है। संदर्भ मेनू के लिए अच्छी तरह से काम करता है। (संपादित करें: अच्छा निसिम लगता है, साझा करें?: पी) – negligible

उत्तर

1

मुझे आंतरिक अपवाद प्रकार मिल जाएगा, फिर प्रति-त्रुटि के आधार पर निर्णय लें कि क्या करना है (पुनरारंभ करना या विफल होना)।

तो

myWatcher.Error += new ErrorEventHandler(OnError); 

Followde द्वारा

private static void OnError(object source, ErrorEventArgs e) 
{ 
    if (e.GetException().GetType() == typeof(InternalBufferOverflowException)) 
    { 
     // This can happen if Windows is reporting many file system events quickly 
     // and internal buffer of the FileSystemWatcher is not large enough to handle this 
     // rate of events. The InternalBufferOverflowException error informs the application 
     // that some of the file system events are being lost. 
     Console.WriteLine(("The file system watcher experienced an internal buffer overflow: " + e.GetException().Message)); 
    } 
} 
+0

पोस्ट कर दूंगा, मैंने वास्तव में अवरुद्ध कतार का उपयोग कर सभी अतिप्रवाह मुद्दों को हल किया – Nissim

2

निश्चित रूप से त्रुटि पर निर्भर करता है?

  1. यदि यह बहुत अधिक डेटा है क्योंकि बफर ओवरराउन (कई परिवर्तन) एक सूची निर्देशिका करते हैं और आपके बाद के परिवर्तनों को पकड़ते हैं।
  2. यदि यह बहुत अधिक डेटा है क्योंकि आप फ़ाइलसिस्टम वाटर घटनाओं को जल्दी से संसाधित नहीं कर रहे हैं, तो सुनिश्चित करें कि आप इसे कुशलता से संसाधित कर रहे हैं।
  3. हटाई गई निर्देशिका, FileSystemWatcher का निपटान करने के अलावा इसके बारे में कुछ भी नहीं कर सकती है, या शायद उस निर्देशिका नाम के मनोरंजन के लिए अभिभावक को देख सकती है।