2011-01-02 9 views
7

मुझे इस साइट पर मिली कुछ सलाह के बारे में स्पष्टीकरण की आवश्यकता है। मैं ऐप भेजने वाला न्यूज़लेटर कर रहा हूं, और मेरे पास एक मेल अलग थ्रेड में भेजा गया है, इसलिए प्रक्रिया पूरी वेबसाइट को धीमा नहीं करती है। कुछ लोगों ने मुझे धागे IsBackground संपत्ति को सत्य पर सेट करने की सलाह दी। मैंने यह किया, लेकिन यह क्या करता है इसके बारे में भी उत्साहित था, इसलिए मैंने थोड़ा गुस्सा किया। जैसा कि यह पता चला है, IsBackground प्रॉपर्टी को सही पर सेट करना इंगित करता है कि "यह ठीक है अगर यह थ्रेड अभी भी चल रहा है, तो प्रक्रिया बंद हो जाती है।"। या माइक्रोसॉफ्ट के रूप में इसे रखता है "कोई भी शेष पृष्ठभूमि धागा बंद हो जाता है और पूरा नहीं होता है।"पृष्ठभूमि के रूप में थ्रेड सेट करें या

मुझे नहीं पता कि मुझे यह गलत तरीका है, लेकिन क्या IsBackground संपत्ति को झूठ में छोड़ना बेहतर नहीं होगा, ताकि स्प्रेड किए गए धागे मुख्य धागे के संबंध में अपना काम पूरा कर सकें? यदि यह धागा निरस्त नहीं की जाएगी जब प्रक्रिया नीचे जाने के लिए प्रक्रिया (जब तक आप इसे जबरन मारने) रहने की कोशिश करेगा कि

while(true) 
{ 
    //do something 
} 

:

+0

आप ईमेल कहां/कहां भेज रहे हैं? वेबसाइट से – SLaks

+0

, मैं मेलमेसेज और smtpclient ऑब्जेक्ट बनाता हूं और डीबी से ईमेल के माध्यम से पुन: सक्रिय करता हूं और उन्हें एक – Andrej

उत्तर

5

यदि आप "IsBackground = true" सेट करते हैं, तो आप थ्रेड को अनिवार्य रूप से चिह्नित कर रहे हैं - इसलिए यदि आप साइट पर जाने के बावजूद अपनी पृष्ठभूमि नौकरी को पूरा करना चाहते हैं, तो मुझे लगता है कि आपका अंतर्ज्ञान सही है, इसे "IsBackground" के रूप में छोड़ दें = false "।

यह मूर्खतापूर्ण नहीं है; स्पॉन्डेड थ्रेड अभी भी मुख्य धागे का एक बच्चा है, इसलिए साइट पर कैसे चलती है, इस पर निर्भर करता है, यह अभी भी पूरी प्रक्रिया को नीचे ला सकता है। यदि आप वास्तव में यह सुनिश्चित करना चाहते हैं कि आपका काम पूरा होने के लिए चलाया जा सकता है इससे कोई फर्क नहीं पड़ता कि साइट पर क्या होता है, आपको इसे अपनी प्रक्रिया में निकालने के बारे में सोचना चाहिए, जैसे कि डब्ल्यूसीएफ सेवा।

0

यह इस धागे की तरह लगता है के लिए कुछ इसी तरह की है।
दूसरी ओर प्रक्रिया के सभी अग्रभूमि धागे नीचे जाने पर बैक ग्राउंड थ्रेड स्वचालित रूप से निरस्त हो जाएगा।

+0

हां भेजता हूं, यह ईमेल भेजता है जब सरणी में ईमेल होते हैं (जबकि लूप का उपयोग करते हुए) .. तो अगर मैं नहीं करता IsBackground संपत्ति को सत्य पर सेट करें, लूप समाप्त होने पर यह चलते रहेंगे? – Andrej

+0

नहीं, जब आप थ्रेड को पारित करते हैं। स्टार्ट से बाहर निकलता है तो थ्रेड भी निकलता है। –

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