मेरे पास एक VB.NET एप्लीकेशन है। उसी में कुछ क्वेरी है, जो परिणाम एक DataGridView में प्रदर्शित करेगा। मेरी क्वेरी निष्पादित करने के लिए इसे 2 से 3 मिनट की आवश्यकता है। अब मैं स्टेटस बार पर एक प्रोग्रेसबार दिखाना चाहता हूं जो डेटा पुनर्प्राप्त प्रगति को प्रदर्शित करेगा। पूरा होने के बाद, यह स्थिति पट्टी से छिप जाएगा और एक लेबल "पूर्ण" दिखाएगा। अगर कोई विशेषज्ञ मेरी मदद करता है तो मैं उसका शुक्रगुजार रहूंगा।
उत्तर:
जवाब के लिए 2 № 1आप सवाल करते हैं कि बहुत सारे मैदान हैं। पहली बात जो मेरे दिमाग में आती है, वह यह है कि आपके पास एक क्वेरी क्यों है जिसे चलाने में इतना समय लगता है, और क्या इसे अनुकूलित किया जा सकता है? आपके द्वारा लौटाया जा रहा डेटा सेट कितना छोटा है? 10 पंक्तियों, 100 पंक्तियों, 100000s? यदि डेटासेट बड़ा है, तो क्या आप पृष्ठांकन का उपयोग कर रहे हैं? ADO.Net एक async इंटरफ़ेस मॉडल प्रदान करता है, यहाँ देखें Async SQLCommand। एक संभावना यह है कि अपनी क्वेरी को async जारी करें और फिर अपनी प्रगति बार दिखाएं, और एक पूर्ण सूचना प्राप्त होने पर प्रगति पट्टी को बंद कर दें।
एक अन्य विकल्प क्वेरी को दूसरे में शुरू करना हैधागा, लेकिन अगर आप एसिंक्लाइंड SQLCommand का उपयोग कर सकते हैं तो शायद इसकी आवश्यकता नहीं है। हालाँकि, यदि आप एक प्रगति बार दिखाना चाहते हैं जो "प्रतीक्षा" संकेतक के विपरीत% पूर्ण दिखाने के लिए अद्यतन करता है, तो यह चुनौतीपूर्ण होगा। एक बात के लिए, आपके पास कोई सुराग नहीं है कि क्वेरी कितनी देर तक चलेगी। यह एक नियतात्मक प्रक्रिया नहीं है जैसे कि डिस्क से किसी फ़ाइल को पढ़ना, जहाँ आप फ़ाइल का आकार, स्थानांतरण गति, आदि का अनुमान लगा सकते हैं। मुझे नहीं लगता कि SQL सर्वर में क्वेरी करने के लिए कोई तंत्र है, "मेरी क्वेरी कैसे चल रही है?" A खराब और बेकार विकल्प पहले आपके द्वारा अपेक्षित रिकॉर्ड की गिनती प्राप्त करने के लिए एक क्वेरी को चलाने के लिए होगा, फिर कुछ क्वेरी पैरामीटर के साथ छोटे सबक्वेरी में भ्रूण क्वेरी को विभाजित करें और "चंक्स" में निष्पादित करें। फिर से, यह कुशल नहीं है। शायद किसी को पता हो। विकल्प।