हमारे पास एक ऐसा फॉर्म है जो WebBrowser नियंत्रण होस्ट करता है। यह फ़ॉर्म पर एकमात्र नियंत्रण है।WinForms में IE 8 होस्टिंग और एक पीडीएफ खोलना
हम प्रपत्र एक अस्थायी पीडीएफ फाइल की फ़ाइल पथ गुजरती हैं और यह करता है:
WebBrowser1.Hide()
WebBrowser1.Navigate("about:blank")
Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete
Application.DoEvents()
System.Threading.Thread.Sleep(50)
Loop
एक बार:
WebBrowser1.Navigate(Me._PathToPdf)
जब प्रपत्र बंद हो रहा है, यह पीडीएफ फाइल से चला फॉर्म बंद है, कॉलिंग क्लास फिर अस्थायी पीडीएफ फ़ाइल हटा देता है।
यह प्रक्रिया बहुत अच्छी तरह से काम करती है ... जब तक हम इंटरनेट एक्सप्लोरर 8 स्थापित नहीं करते हैं। किसी कारण से, IE8 और Adobe Acrobat 8 (या 9) का संयोजन अस्थायी पीडीएफ फ़ाइल पर एक अतिरिक्त फ़ाइल लॉक हैंडल को रखा जाता है। अतिरिक्त लॉक हैंडल तब तक नहीं जाता जब तक कि पूरा एप्लिकेशन बंद न हो जाए। मुझे यह भी जिक्र करना चाहिए कि फाइल पर कोई तालाब नहीं है जब तक कि एक्रोबैट द्वारा फ़ाइल खोला नहीं जाता है।
हम इसे कई मशीनों पर पुन: पेश कर सकते हैं और यह हमेशा आईई 8 और एडोब एक्रोबैट रीडर का संयोजन होता है। हम एडोब एक्रोबैट के बजाय फॉक्सिट रीडर 3 स्थापित कर सकते हैं और चीजें ठीक काम करती हैं। इसी प्रकार, हम आईई 7 और एडोब एक्रोबैट के साथ एक मशीन पर ऐप चला सकते हैं, और चीजें ठीक काम करती हैं। लेकिन, जब आप आईई 8 और एक्रोबैट की जादू औषधि को मिलाते हैं, तो आप एक गड़बड़ी के साथ खत्म हो जाते हैं।
क्या कोई मुझे बता सकता है कि मुझे एक अतिरिक्त फ़ाइल लॉक क्यों मिल रहा है जो एप्लिकेशन के अंत तक जारी रहता है?
धन्यवाद।
एक उदाहरण अनुप्रयोग है कि मेरी समस्या को दर्शाता है यहां पाया जा सकता: PDFLockProblemDemo.zip
ठीक है, हमें इस समस्या का कोई अच्छा समाधान नहीं मिला, इसलिए हमने एक फॉर्म पर ActiveX एक्रोबैट रीडर नियंत्रण का उपयोग करने का प्रयास किया है। दुर्भाग्यवश हमें एक्रोबैट रीडर के संस्करण से बंधे हैं, लेकिन संस्करण को दरवाजा बाहर निकालना आवश्यक था। मैं सवाल बंद कर रहा हूं। –