मेरे पास एक Winforms एप्लिकेशन है, समस्या को थ्रेडिंग के साथ करना है। चूंकि मैं 'MyCustomCode() को कॉल कर रहा हूं जो एक नया धागा बनाता है, और विधि ' SomeMethod() 'को कॉल करता है जो तब MessageBox.Show (...) तक पहुंचता है।Winforms थ्रेडिंग समस्या, दूसरा थ्रेड 1 मुख्य मुख्य रूपों को नियंत्रित नहीं कर सकता
समस्या को थ्रेडिंग के साथ करना है, क्योंकि नव निर्मित धागा को किसी अन्य थ्रेड पर बनाए गए नियंत्रण को एक्सेस करने का प्रयास कर रहा है।
पार धागा आपरेशन मान्य नहीं: नियंत्रण 'TestForm' धागा उस पर बनाया गया था के अलावा किसी अन्य धागे से पहुँचा
मैं त्रुटि हो रही है।
public TestForm()
{
InitializeComponent();
// custom code
//
MyCustomCode();
}
public void SomeMethod()
{
// ***** This causes an error ****
MessageBox.Show(this,
ex.Message,
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error
);
}
private void InitializeAutoUpdater()
{
// Seperate thread is spun to keep polling for updates
ThreadStart ts = new ThreadStart(SomeMethod);
pollThread = new Thread(ts);
pollThread.Start();
}
अद्यतन
आप इस उदाहरण http://www.codeproject.com/KB/cs/vanillaupdaterblock.aspx को देखें, तो विधि CheckAndUpdate MessageBox.Show (..) बुला रहा है कि क्या मेरी समस्या है। मैंने सोचा होगा कि कोड जाने के लिए अच्छा था!
मजेदार बात यह है कि यह कोड शुक्रवार को ठीक काम कर रहा था ???
ऐसा इसलिए हो सकता है क्योंकि मैंने .NET 3.5 स्थापित किया था? क्या यह 3.5 'फीचर' है? मुझे शक है लेकिन यह एकमात्र स्पष्टीकरण है! –
(मैंने इसे हाल ही में स्थापित किया है ..) –