तक पहुँचने मैं वर्तमान में filestreams उपयोग कर रहा हूँ कॉपी करने के लिए फ़ाइलों को एक से दूसरे स्थान के लिए फार्म धागा जमा। यह सब कार्य अब तक का इरादा के रूप में जब मैं अचानक problemn कि File.open धागा है कि यह में चल रहा है जमा।File.open लटकी हुई है और जब एक स्थानीय फ़ाइल
FileStream sourceStream = File.Open(filePath, FileMode.Open)
यह केवल 1 विशिष्ट फ़ाइल (आकार में 3 जीबी) के लिए होता है। दिलचस्प बात यह है कि एक दिन पहले यह सामान्य रूप से काम करता था हालांकि इस फ़ाइल के लिए यह फ़ाइल का आकार नहीं हो सकता है। अगली चीज़ मैंने चेक की थी अगर कुछ प्रकार का अपवाद फेंक दिया गया था कि मुझे पकड़ नहीं है।
मैं आज़माएं/कैच पूरी बात को ब्लॉक (सामान्य रूप से मैं बुला विधि का उपयोग अपवाद को पकड़ने के लिए) और अभी भी एक ही प्रभाव डाल दिया।
try
{
FileStream sourceStream = File.Open(filePath, FileMode.Open);
sourceStream.Close();
}
catch (Exception e)
{
Console.Write("A");
}
मैंने यह भी जांच की कि फ़ाइल को पहले से एक्सेस किया जा रहा है या नहीं। तब एक अपवाद फेंक दिया जाता है (अन्य फ़ाइलों के लिए यह परीक्षण किया की तरह के रूप में मैं इस विशिष्ट फ़ाइल के लिए कहा कि यह हमेशा धागा ऊपर लटका हुआ है अब जब मैं इसे खोलने का प्रयास)।
फ़ाइल एक ही फ़ोल्डर में स्थानीय हार्ड ड्राइव और अन्य फ़ाइलों (छोटे यद्यपि) पर स्थित है इस समस्या को नहीं दिखाते।
मैं अब विचारों से बाहर चल रहा हूँ क्या संभावित कारण हो सकता है, मेरे सवाल यह है: क्या इस अप्रत्याशित व्यवहार के लिए संभावित कारणों जा और कैसे वे adverted किया जा सकता है हो सकता है?
संपादित करें: अब यह फिर से काम करता है (बस जब मैं उपयोग करने के लिए प्रक्रिया पर नजर रखने के लिए यह करने की कोशिश की फिर से काम शुरू कर दिया)। तो कुल मिलाकर कोई संकेत नहीं कि घटना के कारण क्या हो सकता है। अगर किसी को यह पता चल जाए कि इसके लिए एक संभावित कारण क्या हो सकता है तो भविष्य में समस्या के संभावित दोहराने से बचने के लिए यह जानना अच्छा होगा।
using (var stream = new BufferedStream(File.OpenRead(filePath), 1024 * 1024))
{
//..do calculations
}
कौन सा मैं फ़ाइल के संबंध में कुछ हैश गणना करने के लिए उपयोग करें:
नोट के रूप में भी एक सवाल यह File.Open से पहले पाला मैं के साथ एक का उपयोग कर ब्लॉक की है। यह एक फ़ाइल को खोलने के साथ सभी में कोई मुद्दों था (हालांकि बाद में File.Open मुद्दों था)
संपादित करें: मैं सिर्फ sysadmins यहाँ है कि समस्या पर एक नया प्रकाश चमकता से एक जानकारी प्राप्त किया है: प्रणाली एक तरह से इतना है कि पूरी व्यवस्था समय backuped जाता है और फिर ओएस इसके बारे में कोई जानकारी होने wihtout फ़ाइल द्वारा दायर में स्थापित किया गया है। इसका अर्थ यह है कि बैकअप फ़ाइल के मामले में ओएस सोचता है कि यह वहां है और कोई भी इसे तब तक एक्सेस नहीं करता है जब वास्तविकता में वर्तमान में इसका बैकअप लिया जा रहा है (और इस प्रकार बैकअप प्रक्रिया का वर्णन करने के तरीके के अनुसार ओएस के भीतर से पहुंचा जा सकता है। .... क्योंकि ओएस बैकअप के बारे में नहीं जानता है, संसाधनों में हार्ड ड्राइव एक्सेस और टास्क मैनेजर में कुछ भी नहीं दिखाया गया था)। इस प्रकार जानकारी के साथ यह हो सकता है कि ओएस को फ़ाइल तक पहुंचने के बारे में पता नहीं था, इसलिए इसे एक्सेस करने की कोशिश की गई (खुली कमांड के माध्यम से) और इंतजार कर रहा था और हार्ड ड्राइव पढ़ने के लिए इंतजार कर रहा था, जो फ़ाइल में आने के लिए कभी नहीं हुआ क्योंकि यह वास्तविकता में सुलभ नहीं था)। इस प्रकार इसे फ़ाइल के टाइमआउट में भागना पड़ता था।खुला आदेश (अगर मैं sys व्यवस्थापक सही रूप में वहाँ समझा नई infos के साथ वहाँ कम से कम मेरा अनुमान है) नहीं है
tnx
यह संभव नहीं है :) है, लेकिन वास्तव में आप उपयोग कर सकते हैं [है प्रक्रिया मॉनिटर] (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) यह देखने के लिए कि यह फ़ाइल खोले जाने पर वास्तव में क्या होता है। –
क्या आपने [बुफर्डस्ट्रीम] (http://msdn.microsoft.com/en-us/library/system.io.bufferedstream.aspx) का उपयोग करने पर विचार किया है? –
मैंने यह भी सोचा था कि ऐसा होने तक असंभव था। एक अपवाद मैं समझ सकता था कि अगर मैं कोशिश/पकड़ याद करता हूं या अगर यह शुरू करने के लिए काम नहीं करता है (अजीब भी होगा लेकिन कम से कम पहले यह समस्या उस दिन काम नहीं करेगा :))। प्रक्रिया मॉनीटर पर एक नज़र डालेंगे tnx – Thomas