2009-08-21 9 views
5

मैं एक धागा बनाने में मदद की जरूरत है, सी # WinFormsWinForms में थ्रेड कैसे बनाएं?

private void button1_Click(object sender, EventArgs e) { 
    Thread t=new Thread(new ThreadStart(Start)).Start(); 
} 

public void Start() { 
    MessageBox.Show("Thread Running"); 
} 

मैं इस संदेश प्राप्त हो रहा:

Cannot implicitly convert type 'void' to 'System.Threading.Thread 

क्या MSDN प्रलेखन अच्छा नहीं

उत्तर

14

यह काम करेगा:

Thread t = new Thread (new ThreadStart (Start)); 
t.Start(); 

और यह रूप में अच्छी तरह काम करेगा:

new Thread (new ThreadStart(Start)).Start(); 

MSDN प्रलेखीकरण अच्छा और सही है, लेकिन आप गलत कर रहे हैं। :) आप ऐसा करते हैं:

Thread t = new Thread (new ThreadStart(Start)).Start(); 

तो, क्या आप वास्तव में यहां करते हैं, उद्देश्य यह है कि प्रारंभ() प्रणाली को एक सूत्र वस्तु (जो शून्य है) द्वारा दिया जाता है आवंटित करने के लिए कोशिश कर रहा है; इसलिए त्रुटि संदेश।

+2

विशेष रूप से, MSDN प्रलेखीकरण इंगित करता है कि 'प्रारंभ की वापसी प्रकार()' है शून्य ... –

2

कोशिश यह विभाजित के रूप में है क्या करने के लिए जैसे:

private void button1_Click(object sender, EventArgs e) 
{ 
    // create instance of thread, and store it in the t-variable: 
    Thread t = new Thread(new ThreadStart(Start)); 
    // start the thread using the t-variable: 
    t.Start(); 
} 

Thread.Start - विधि void देता है (यानी। कुछ भी नहीं), इसलिए जब आप

Thread t = something.Start(); 

बारे में आप t -variable को, Start -method है, जो शून्य है का परिणाम निर्धारित करने की कोशिश कर रहे हैं। यह संभव नहीं है, और इसलिए आपको उपरोक्त निर्दिष्ट अनुसार दो पंक्तियों में कथन को विभाजित करना होगा।

2

.NET ढांचा भी एक आसान धागा वर्ग BackgroundWorker प्रदान करता है। यह अच्छा है क्योंकि आप इसे VisualEditor का उपयोग करके जोड़ सकते हैं और इसके सभी गुणों को सेट कर सकते हैं।

यहाँ कैसे BackgroundWorker का उपयोग करने पर (छवियों के साथ) एक अच्छा छोटे ट्यूटोरियल है: http://dotnetperls.com/backgroundworker

+1

मैं उस सुझाव को दूसरा करना होगा। पृष्ठभूमि वर्कर दृष्टिकोण थ्रेड का उपयोग करने से कहीं अधिक शुरुआती अनुकूल है। यह आपको यूआई थ्रेड और वर्कर थ्रेड के बीच मार्शल डेटा में भी मदद करता है। –

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