मैं FileOpenDialog गायब हो जाते हैं?
निजी शून्य ofdAttachment_FileOk (वस्तु प्रेषक, CancelEventArgs कैसे कर सकते हैं ई) {string fullFilename = ofdAttachment.FileName; स्ट्रिंग फ़ाइल नाम = पथ। GetFileName (fullFilename); स्ट्रिंग dirName = पथ। GetDirectoryName (fullFilename); this.Parent.Refresh (); this.Refresh (); Var drv = bdsAttachments.AddNew () के रूप में DataRowView; Var फ़ज़ = नया फास्टज़िपइवेंट्स (); Fze.ProgressInterval = नया समयक्षेत्र (0, 0, 0, 0, 250); fze.Progress = नए ICSharpCode.SharpZipLib.Core.ProgressHandler ((वस्तु ओ, ICSharpCode.SharpZipLib.Core.ProgressEventArgs पूर्व) = & gt; {drv [ "फ़ाइल नाम"] = "को संपीड़ित:" + ex.PercentComplete.ToString () + "%"; grdAttachments.Refresh (); this.Refresh (); // यह या तो Application.DoEvents काम नहीं करता है (); // फिर से आमिर का जवाब, न तो काम this.Refresh ();}); Var बीए = नया फास्टज़िप (फेज)। क्रेलेटजिपटौअरे (डायनेम, झूठी, फाइलनाम, रिक्त); Drv ["filename"] = फाइलनाम; Drv ["file_zip_image"] = बीए; grdAttachments.Refresh (); }
[संपादित करें: हल]
का उपयोग कर:
निजी शून्य ofdAttachment_FileOk (वस्तु प्रेषक, CancelEventArgs ई) {सिस्टम। Threading.ThreadPool.QueueUserWorkItem ((ओ) = & gt; संलग्न ()); } शून्य संलग्न करें () (यदि (this.InvokeRequired) {this.Invoke (नई एक्शन (अटैच)); } और {यह.पंजी। रिफ्रेश (); this.Refresh (); स्ट्रिंग फ़ुलफ़ाइलनाम = ofdAttachment.FileName; स्ट्रिंग फ़ाइल नाम = पथ। GetFileName (fullFilename); स्ट्रिंग dirName = पथ। GetDirectoryName (fullFilename); Var drv = bdsAttachments.AddNew () के रूप में DataRowView; Var फ़ज़ = नया फास्टज़िपइवेंट्स (); Fze.ProgressInterval = नया समयक्षेत्र (0, 0, 0, 0, 250); fze.Progress = नए ICSharpCode.SharpZipLib.Core.ProgressHandler ((वस्तु ओ, ICSharpCode.SharpZipLib.Core.ProgressEventArgs पूर्व) = & gt; {drv [ "फ़ाइल नाम"] = "को संपीड़ित:" + ex.PercentComplete.ToString () + "%"; GrdAttachments.Refresh ();}); Var बीए = नया फास्टज़िप (फेज)। क्रेलेटजिपटौअरे (डायनेम, झूठी, फाइलनाम, रिक्त); Drv ["filename"] = फाइलनाम; Drv ["file_zip_image"] = बीए; grdAttachments.Refresh (); }}
ऐसा लगता है कि आपकी फ़ाइल संपीड़न की तरह एक लंबी चलने वाली प्रक्रिया है जो प्रपत्र को रोकता है संपीड़न समाप्त होने तक पुन: निर्माण से। यदि आप पृष्ठभूमि वर्कर ऑब्जेक्ट का उपयोग करते हैं और एक पृष्ठभूमि थ्रेड पर संपीड़न रूटीन करते हैं, तो यूआई धागा पेंटिंग के लिए प्रपत्र के लिए उपलब्ध होगा।
BackgroundWorker information:
Comments
Post a Comment