2012-04-19 11 views
5

मैं कोड की शांति निम्नलिखित है। इस मामले में ExecuteNonQuery त्रुटि कोड 0x80131904 के साथ अपवाद फेंकता है, लेकिन यह बहुत सामान्य अपवाद है जो कई कारणों से हो सकता है। त्रुटि संदेश इस तरह दिखता है: {"वर्तमान कमांड पर एक गंभीर त्रुटि आई। परिणाम, यदि कोई है, को त्याग दिया जाना चाहिए। \ R \ n उपयोगकर्ता द्वारा निष्पादन रद्द किया गया।"}क्या सबसे अच्छा तरीका है "उपयोगकर्ता द्वारा रद्द ऑपरेशन" को पकड़ने के लिए अपवाद

मुझे कोई विकल्प नहीं दिख रहा है त्रुटि संदेश का विश्लेषण ... कोई विचार?

धन्यवाद

पीएस। हाँ, मुझे पता है कि asyncronyc ऑपरेशन के लिए कमांड कमांड शायद सबसे अच्छा विचार नहीं है, क्योंकि .NET 2.0 के लिए एमएसडीएन पर चेतावनी थी, लेकिन .NET 4.0 के लिए यह चेतावनी हटा दी गई है। और मैं भी एक और कार्यान्वयन जब रद्द विधि एक और धागे से कहा जाता है पसंद नहीं है, मेरे लिए के रूप में यह कोड और अधिक कठिन

+0

क्या यह Winforms है? – Likurg

+0

नहीं, यह सिर्फ एक कक्षा पुस्तकालय है, जो एडीओ.NET कक्षाओं (.NET 4.0) के माध्यम से डेटाबेस के साथ काम करता है। तो मैं BackgroundWorker का उपयोग नहीं कर सकता :) – and85

+0

ठीक है, आप Winforms में अपनी लाइब्रेरी का उपयोग करेंगे? या कहाँ? – Likurg

उत्तर

0

तो imho आप आगे क्या करना चाहिए बनाता है:

  1. जहां आप एक धागा बनाने ado का उपयोग करें (यह Thread example पढ़ें)
  2. थ्रेड हटाएं। नींद (100); // Imho इसका उपयोग कभी नहीं करें
  3. अपनी कक्षा में जोड़ें स्थिर बूल muststop = false;
  4. अपनी कक्षा सार्वजनिक स्थिर समारोह में जोड़े बदलने के लिए
  5. बदलें आप धागा के समारोह अगर muststop == सच

मुझे आशा है कि इस मदद आप

-1

आप कर सकते हैं परीक्षा अपवाद संदेश इसे रोकने के लिए "muststop" कैच ब्लॉक में यह पता लगाने के लिए कि उपयोगकर्ता द्वारा कौन सा ऑपरेशन रद्द कर दिया गया था:

try 
{ 
    //your code 
} 
catch (SqlException ex) 
{ 
    if (ex.Message.Contain("Operation cancelled by user")) 
    { 
     //Do something here 
    } 
} 
संबंधित मुद्दे

 संबंधित मुद्दे