मेरे पास एक ऐसा एप्लिकेशन है जो अन्य अनुप्रयोगों को लॉन्च करता है, और उसके बाद एक विशिष्ट डेटा फ़ाइल बनाने के लिए प्रतीक्षा करता है (यह एक समय में एक एप्लिकेशन देखता है)। प्रत्येक बार जब कोई एप्लिकेशन लॉन्च होता है तो यह एक विशिष्ट फ़ाइल को बनाने के लिए एक विशिष्ट निर्देशिका देखता है। मैं ऐसा करने के लिए FileSystemWatcher का उपयोग कर रहा हूं (इसे निर्देशिका में सेट करें, फिर सही फ़ाइल नाम के लिए फ़िल्टर करें)। यह पहली बार (हमेशा) महान काम करता है, लेकिन दूसरा एप्लीकेशन लॉन्च कभी भी घटना को नहीं चलाता है। घटना को आग लगने का एकमात्र तरीका यह है कि यदि मैं इवेंट हैंडलर में ब्रेक-पॉइंट डालता हूं, या यदि मेरे पास थ्रेड है। ईवेंट हैंडलर में स्लीप कमांड। यह मेरे लिए बहुत अजीब लगता है ... क्या कुछ दौड़ की स्थिति है जिसके बारे में मुझे पता नहीं है? कोड यहाँ है। ध्यान दें मेरे पास एक थ्रेड है। नींद (500)। इस लाइन के साथ कोड हर बार काम करता है। इसके बिना असफल हो जाएगा। मैं वास्तव में एक नींद कमांड पर भरोसा नहीं कर रहा हूँ। मुझे यकीन नहीं है कि कौन सी हालत का कारण बन जाएगा जो काम नहीं करेगा।फाइलसिस्टम वाटर - घटना दूसरी बार गोलीबारी नहीं कर रही है
public static void watchFiles(string path)
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = path;
watcher.Created += new FileSystemEventHandler(watcher_Handler);
watcher.EnableRaisingEvents = true;
}
public static void watcher_Handler(object sender, FileSystemEventArgs e)
{
//Hack - the sleep allows the second and third application to be caught by this event
Thread.Sleep(500);
switch (e.ChangeType.ToString())
{
case "Changed":
break;
case "Deleted":
break;
case "Created":
if (e.Name == "log.dat")
{
parseDataFile();
moveHTMLtoLMS();
}
break;
default:
break;
}
}
किसी को जानते हो क्यों मुझे लगता है कि नींद है (या तोड़ने सूत्री) दूसरी बार काम करने के लिए कोड प्राप्त करने के लिए की जरूरत है?
यह कोड मुझे ठीक दिखता है। – Simone
नोट: आपको स्विच में 'e.ChangeType.ToString()' का उपयोग करने की आवश्यकता नहीं है, बस 'e.ChangeType' पर स्विच करें और' ChangeType.XXX 'केस बनाएं। यह दृढ़ता से टाइप किया गया है और कम त्रुटि प्रवण बनाता है। – Femaref
फाइल सिस्टम वॉचर में बहुत सी चेतावनियां हैं। http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.oncreated.aspx यह कहा गया, क्या आप सुनिश्चित हैं कि विभिन्न दर्शक एक ही निर्देशिका नहीं देख रहे हैं? – NotMe