मेरे पास एक बड़ी text file
है जिसमें बहुत सारी डेटा हैं। मेरे आवेदन में मैं इस फ़ाइल को खोलता हूं, नियमित अभिव्यक्ति से मेल करके प्रत्येक पंक्ति को पढ़ता हूं और इसे डेटाग्रिडव्यू में प्रदर्शित करता हूं। उत्पन्न पंक्तियों की कुल संख्या लगभग 2000 (कभी-कभी और भी अधिक है, तो बहुत बड़ी)।प्रोग्रेस बार और फ़ाइल लोडिंग
तो इन सभी परिचालनों के लिए इसमें काफी समय लगता है। तो मैंने पृष्ठभूमि कोड का उपयोग करके इस कोड को दूसरे धागे में ले जाया और सब कुछ ठीक है सिवाय इसके कि मैं एक प्रगति पट्टी में लोडिंग स्थिति दिखाना चाहता हूं जहां मैं असफल रहा हूं।
मैंने फ़ाइल लंबाई प्राप्त करने के लिए FileInfo
कक्षा का उपयोग किया है और फिर यह मान Progressbar.Maximum
पर दिया है। सही दृष्टिकोण नहीं लगता है क्योंकि "3" पंक्तियों वाली एक परीक्षण फ़ाइल में "305" की फ़ाइल लंबाई लौटा दी गई है। मुझे समझ में नहीं आता कि मुझे इस तरह से कितना कदम अंतराल देना चाहिए।
कोड का नमूना:
++val;
wk.ReportProgress(val);
और उसके बाद:
FileInfo ff = new FileInfo(openFileDialog1.FileName);
int fsize= Convert.ToInt32(ff.Length);
int val=1;
pgbar_load.Invoke(new MethodInvoker(delegate { pgbar_load.Maximum = fsize; }));
और पाश में
private void bgwrkr_load_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
pgbar_load.Value = e.ProgressPercentage;
}
तो दो बातें मैं देख रहा हूँ:
- प्रगति पट्टी के लिए अधिकतम मूल्य निर्धारित करना।
- चरण सूचकांक को सही तरीके से सेट करना।
कृपया मुझे आगे बढ़ने का एक तरीका सुझाएं।
मैं हर बार कुल पढ़ने बाइट्स कैसे पढ़ सकता हूं, मेरा मतलब है कि int कुल रीड मान? बात यह है कि मैंने पहली बार सभी फाइलें पढ़ीं और डेटा को जेनेरिक सूची में स्टोर किया। और फिर एक लूप में मैं डेटाग्रिड की प्रत्येक पंक्ति को अद्यतन करता हूं जहां मैं प्रगति दिखा रहा हूं। – Cdeez
आप जो भी कर रहे हैं उसके सवाल में जोड़ा गया कोड देख सकते हैं। – Cdeez
इस उत्तर में कुछ संपादन परिणाम देंगे --- 'totalRead' और' totalFilesize' 'डबल' मान होना चाहिए, क्योंकि यदि वे पूर्णांक हैं, तो परिणाम हमेशा शून्य होता है (परिणाम का एक प्रकार का कास्ट पूर्णांक) और 100 डी * 0 = 0। और इसकी 'गणित। छत(); ' – Cdeez