संभव डुप्लिकेट:
Getting Cross-thread operation not valid
Cross-thread operation not validपार धागा आपरेशन मान्य नहीं है, जबकि एक COM पोर्ट को सुन
मैं इतना है कि मैं नए हैंडलर बनाने COM पोर्ट को सुनने के लिए कोशिश कर रहा हूँ SerialPort.DataReceived घटना के लिए। तर्क सरल है - मैं टेक्स्टबॉक्स 1 पर कुछ लिखता हूं, बटन 1 दबाता हूं और मेरा टेक्स्ट इसे लेबल 1 में स्वयं दिखाना चाहिए। लेकिन मेरा आवेदन नहीं चलना चाहता, क्योंकि यह 'क्रॉस थ्रेड ऑपरेशन मान्य नहीं है' त्रुटि फेंकता है। मैंने कुछ खोज और पाया वस्तु को आमंत्रित किया - मैं अपने उदाहरण में इसका उपयोग कैसे कर सकता हूं? मुझे आमंत्रण तर्क शामिल करने की आवश्यकता क्यों है?
namespace WindowsApplication1
{
public partial class Form1 : Form
{
SerialPort sp = new SerialPort();
public Form1()
{
InitializeComponent();
sp.DataReceived += MyDataReceivedHandler;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void MyDataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
try
{
//sp.PortName = "COM3";
//sp.Open();
Label1.Text = sp.ReadLine();
}
catch (Exception exception)
{
RichTextBox1.Text = exception.Message + "\n\n" + exception.Data;
}
finally
{
sp.Close();
}
}
private void button1_Click(object sender, EventArgs e)
{
try
{
sp.PortName = "COM3";
sp.Open();
sp.WriteLine(TextBox1.Text);
}
catch (Exception exception)
{
RichTextBox1.Text = exception.Message + "\n\n" + exception.Data;
}
finally
{
sp.Close();
}
}
}
}
@ पीटर: यहां COM पोर्ट आरएस 232 सीरियल इंटरफ़ेस है। यूएसबी के बावजूद और अभी भी कई डिवाइस हैं (जैसे जीपीएस, मेडिकल) जो पीसी संचार के लिए सीरियल पोर्ट का उपयोग करते हैं। – Sesh
@_simon_: बस उत्सुक: इस विशेष एप्लिकेशन में COM पोर्ट का उपयोग क्या किया जाता है? –
@_simon_: मैंने अपना उत्तर –