2009-04-07 7 views
14

हमारे पास कुछ बुनियादी सी # तर्क है जो एक निर्देशिका पर पुनरावृत्त करता है और फ़ोल्डरों और फ़ाइलों को भीतर देता है। जब नेटवर्क शेयर (\\ सर्वर \ शेयर \ फ़ोल्डर) के विरुद्ध चलाया जाता है जो पहुंच योग्य या अमान्य है, तो कोड कॉल से वापस लौटने से पहले लगभग 30 सेकंड के लिए 'लटका' लगता है।कैसे करें: अनुपलब्ध नेटवर्क का निरीक्षण करते समय टाइमआउट को रोकें - सी #

मैं एक विधि के साथ समाप्त करना चाहता हूं जो दिए गए पथ से फ़ोल्डरों और फ़ाइलों को प्राप्त करने का प्रयास करेगा, लेकिन टाइमआउट अवधि के बिना। दूसरे शब्दों में, टाइमआउट को पूरी तरह से कम या खत्म करने के लिए।

मैंने कुछ समय पहले निर्देशिका के अस्तित्व को मान्य करने के रूप में सरल कोशिश की है, यह सोचने से पहले कि 'अनुपलब्ध' नेटवर्क ड्राइव जल्दी से झूठी वापसी करेगा, लेकिन यह अपेक्षा के अनुसार काम नहीं करता था।

System.IO.Directory.Exists(path) //hangs 

System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(path); //hangs 

कोई सुझाव जो मुझे एक कुशल (और उम्मीदपूर्वक प्रबंधित) समाधान प्राप्त करने में मदद कर सकता है?

+0

कोई अंतिम इसके बारे में काम कर रहे पूर्ण स्रोत कोड नमूने के साथ समाधान? – Kiquenet

उत्तर

6

इसे अपने स्वयं के धागे पर रखें, अगर यह निश्चित समय में वापस नहीं आ जाता है, तो आगे बढ़ें।

1

शायद आप पहले सर्वर को पिंग करने का प्रयास कर सकते हैं, और अगर आपको कोई प्रतिक्रिया मिलती है तो केवल निर्देशिका जानकारी मांगें?

+0

मैंने सॉफ्टवेयर की तलाश में मशीनों के हमारे नेटवर्क को चलने के लिए सफलतापूर्वक इसका उपयोग किया है। हालांकि, यूएनसी पथ से सर्वर को पार्स करने के लिए संभव नहीं हो सकता है। –

16

आप इस कोड का उपयोग कर सकते हैं स्थापित करने का एक तरीका के लिए:

var task = new Task<bool>(() => { var fi = new FileInfo(uri.LocalPath); return fi.Exists; }); 
task.Start(); 

return task.Wait(100) && task.Result; 
+4

मेरे द्वारा +1, यह फाइलों के लिए बहुत अच्छा है लेकिन मूल प्रश्न का उत्तर देने के लिए इसका उपयोग बेकार है। प्रश्न का उत्तर देने के लिए, फ़ाइलों के बजाय निर्देशिकाओं की जांच के लिए 'नई FileInfo (uri.LocalPath)' को 'new DirectoryInfo (strPath) 'के साथ बदलने का प्रयास करें। –

+1

*** यह उत्तर होना चाहिए *** ओपी pls chng –

संबंधित मुद्दे