/ / एएसपीनेट फ़ाइल वॉचर अचानक व्यवहार - सी #, एएसपीनेट

एएसपीनेट फ़ाइल वॉचर अचानक व्यवहार - सी #, एएसपीनेट

मैंने फ़ाइल निर्माण के लिए फ़ोल्डर पर निगरानी रखने के लिए फ़ाइल वॉचर का उपयोग किया है, मेरा कोड नीचे है: -

 _watcher = new FileWatcher();
_watcher.Path = ConfigurationManager.AppSettings["LandingArea"];
_watcher.NotifyFilter =
NotifyFilters.CreationTime |
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName |
NotifyFilters.LastAccess;
_watcher.Filter = "*.xml";
_watcher.EnableRaisingEvents = true;
_watcher.Created += _watcher_Created;

----------------------- घटना नीचे है ----------------------

  private void _watcher_Created(object sender, System.IO.FileSystemEventArgs e)
{
DataAccessLayer.InsertFileToDatabase();
}

मेरा सवाल है कि मुझे एक ही समय में 3 फाइलें मिल रही हैं और डेटाबेस में से केवल 3 फाइलों में से 1 को डाला गया है जिसका मतलब है कि फ़ाइल वॉचर ने केवल 1 फाइल के लिए ईवेंट निकाल दिया है, भले ही मेरे पास 3 फाइलें बनाई गई हों।

किसी भी मदद की सराहना की है।

उत्तर:

जवाब के लिए 0 № 1

InsertFileToDatabase को कॉल करते समय आप FileSystemEventArgs को अनदेखा कर रहे हैं। मुझे संदेह है कि इस विधि के अंदर तर्क में एक बग हो सकता है।

घटना तर्क नई फाइल का पूरा पथ ले जा रहे हैं, साथ ही जानकारी इस पर किस प्रकार का परिवर्तन हुआ है। मैं आपको कस्टम तर्क के बजाए उस वस्तु पर भरोसा करने का सुझाव देता हूं।

इसका मतलब है कि फ़ाइल वॉचर ने केवल 1 फाइल के लिए ईवेंट निकाल दिया है, भले ही मेरे पास 3 फाइलें बनाई गई हों।

यह केवल अप्रत्यक्ष निष्कर्ष है और यह गलत हो सकता है। मेरा सुझाव है कि आप इवेंट हैंडलर का ऑडिट करें और पूर्ण पथ ट्रैक करें और ईवेंट तर्क से प्रकार बदलें, और इससे आपको समाधान मिल जाएगा।