WPF दस्तावेज़ व्यूअर में एक एक्सपीएस फ़ाइल दिखाने के बाद, और DocumentViewer इंस्टेंस को बंद करने के बाद, एक्सपीएस फ़ाइल लॉक है और मैं इसे हटा नहीं सकता। मुझे एक्सपीएस फ़ाइल पर लॉक जारी करने की ज़रूरत है, इसलिए मैं इसे हटा सकता हूं, एक ही नाम के साथ एक और लिख सकता हूं, और वैकल्पिक रूप से उस नई एक्सपीएस फ़ाइल को नए दस्तावेज़ व्यूअर उदाहरण में प्रदर्शित कर सकता हूं। मुझे एक ही ऐप इंस्टेंस में ऐसा करने की ज़रूरत है - ऐप को बंद किए बिना (यह एक प्रिंट पूर्वावलोकन परिदृश्य है)।मैं स्रोत एक्सपीएस दस्तावेज़ पर अपना फ़ाइल लॉक जारी करने के लिए डब्ल्यूपीएफ के दस्तावेज़ व्यूअर को कैसे प्राप्त करूं?
दूसरे शब्दों में, मैं कैसे में एक अपवाद फेंकने के बिना चलाने के लिए निम्नलिखित कोड प्राप्त होगा "File.Delete (tempXpsFile);" बयान?
var tempXpsFile = @"c:\path\to\Temporary.xps";
var previewWindow = new Window();
var docViewer = new DocumentViewer();
previewWindow.Content = docViewer;
GenerateXpsFile(tempXpsFile);
var xpsDocument = new XpsDocument(tempXpsFile);
previewWindow.ShowDialog();
File.Delete(tempXpsFile); //this will throw an exception due to a file lock on tempXpsFile
GenerateXpsFile(tempXpsFile); //assume this generates a different file
//otherwise the scenario doesn't make sense as we could just skip the above delete
//and this statement and re-use the same file
previewWindow = new Window();
docViewer = new DocumentViewer();
previewWindow.Content = docViewer;
previewWindow.ShowDialog();
एप्लिकेशन बंद फ़ाइल अवरोध खोल, के रूप में WPF DocumentViewer doesn't release the XPS file में उल्लेख करता है, लेकिन है कि इस परिदृश्य में एक विकल्प नहीं है।
इसने मुझे पकड़ा, मेरे पास एक दर्शक है जो एक दस्तावेज़ डाउनलोड करता है, एक बार दस्तावेज़ स्थापित करने के बाद यह इन परिवर्तनों को लागू करने के बाद भी असफल हो जाता है।जब मैं दस्तावेज़ लोड कर रहा था, तो मैं मूल दस्तावेज़ का निपटारा कर रहा था जो दस्तावेज़ को फिर से लोड करने के लिए रिलीज़ होने में रिलीज़ होने का कारण बनता था। –