से किसी फ़ॉर्म पर नियंत्रण जोड़ें, यह इस साइट पर मेरी पहली पोस्ट है, जो मुझे कहना चाहिए, बढ़िया है!किसी अन्य थ्रेड
वैसे मेरी समस्या है, और मुझे उम्मीद है कि कोई मेरी मदद करने में सक्षम होगा।
मैं अपने प्रारंभिक समय को गति देने के लक्ष्य के साथ अपने मुख्य रूप में नियंत्रण जोड़ने को स्थगित करने का प्रयास कर रहा था। खैर मैं निम्न अपवाद में चलाएँ: वैध
पार धागा आपरेशन नहीं: नियंत्रण 'Form1' एक धागा धागा उस पर बनाया गया था के अलावा अन्य से पहुँचा।
मैंने बस एक छोटे से उदाहरण पर समस्या को हल करने की कोशिश की लेकिन समस्या बनी रहती है।
using System;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
namespace AddConrolFromAnotherThread {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void AddButton() {
if(this.InvokeRequired){
this.Invoke(new MethodInvoker(this.AddButton));
}
Random random = new Random(2);
Thread.Sleep(20);
Button button = new Button();
button.Size = new Size(50,50);
button.Location =
new Point(random.Next(this.Width),random.Next(this.Height));
this.Controls.Add(button);
}
private void buttonStart_Click(object sender, EventArgs e) {
Thread addControlThread =
new Thread(new ThreadStart(this.AddButton));
addControlThread.Start();
}
}
}
मैं आह्वान विधि का उपयोग किया था और जांच की थी, तो InvokeRequiered सही है, लेकिन रह "सही" रखने InvokeRequiered: यहाँ मेरी कोड है। मैं वास्तव में इसे समझ में नहीं आता। कम से कम मैं StackOverflow अपवाद की अपेक्षा करता हूं, क्योंकि यह एक रिकर्सन कॉल है।
तो, अगर कोई भी इसी तरह की समस्या से मिलता है, तो कृपया आप मुझे बता सकते हैं कि मैंने क्या गलत किया?
थानक्स, इगोर!
हाय, सश। त्वरित उत्तर के लिए धन्यवाद। लेकिन मुझे यकीन नहीं है कि हम एक-दूसरे को समझते हैं। मैंने जांच की कि फॉर्म को इनवॉक कॉल की आवश्यकता है या नहीं। और मेरे मामले में मैं नियंत्रण अद्यतन नहीं करता हूं, मैं बस फॉर्म पर एक नया जोड़ने की कोशिश कर रहा हूं। – Gico
अंतर इतना बड़ा नहीं है - आपको उस नियंत्रण को बनाना है जिसे आप उसी थ्रेड में फॉर्म (उदाहरण के लिए प्रारंभिक कॉम्पोनेंट के बाद) में जोड़ना चाहते हैं और केवल वर्णित दृष्टिकोणों का उपयोग करके इसे अलग थ्रेड से जोड़ना चाहते हैं। – sashaeve