मैं एक सी # अनुप्रयोग पर काम कर रहा हूं जो SQL सर्वर से संग्रहित प्रक्रियाओं को कॉल करता है। उपयोगकर्ता द्वारा इनपुट पैरामीटर के आधार पर, संग्रहित प्रक्रिया में कुछ समय लग सकता है और कई रिकॉर्ड लौटा सकते हैं।लिंक - संग्रहित प्रक्रिया के निष्पादन को बाधित करें
मैं एक रद्द बटन को कार्यान्वित करना चाहता हूं ताकि उपयोगकर्ता लंबे समय तक संग्रहीत प्रक्रिया के निष्पादन को रद्द कर सके। मैं संग्रहित प्रक्रिया में नए थ्रेड में कॉल चलाता हूं ताकि संग्रहित प्रक्रिया में कुछ समय लगे जब GUI प्रभावित नहीं होता है। मैंने धागे को निरस्त करने के बारे में पढ़ा लेकिन निरस्त करने के बारे में कई अस्वीकार राय मिली।
संभावित समाधान मैं के बारे में सोच:
- वहाँ एक आम तरीके से संग्रहीत प्रक्रिया
- वहाँ एक बेहतर धागा बंद करने के लिए रास्ता नहीं है (जो सी # कोड में एक विधि है) को क्रियान्वित करने को रोकने के लिए है? (मैं भी Thread.Interrupt (पाया) लेकिन यह केवल एक अवरुद्ध धागे पर काम करता है, कोड चलाने पर नहीं)
- मैं धागा त्याग और एक नया शुरू लेकिन तब अनावश्यक डेटाबेस और नेटवर्क संसाधनों का उपयोग किया जाता कर सकते हैं
- वहाँ है सर्वर की तरफ से संग्रहीत प्रक्रिया को रोकने का एक तरीका?
अंधेरे में गोली मार दी, लेकिन DataContext पर कनेक्शन डिस्कनेक्ट करने देता है, या एक TransactionScope में कॉल लपेटकर और बुला "रोलबैक" इसे रोको? – Ocelot20