Nieprawidłowa operacja między wątkami: do formantu 'button1' uzyskiwany jest dostęp z wątku innego n

0

Więc... Próbuję zrobić z arduino... żeby się komunikowało z komputerem. Pracuję nad tym, żeby arduino odpowiadało "Done Connection\n", jak komputer wyśle "Available\n".
Problem: InvalidOperationException was unhandled

Nieprawidłowa operacja między wątkami: do formantu 'button1' uzyskiwany jest dostęp z wątku innego niż wątek, w którym został utworzony.

Komponenty:
button1 [Guzik Połączenia]
serialPort1 [Port COM, na razie tylko COM3]

Potrzebny fragment kodu:

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort1.Open();
            }
            catch (Exception)
            {
            }
            serialPort1.Write("Available\n");
        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            receivedData = serialPort1.ReadTo("\n");
            if (receivedData == "Done connection")
            {
                    button1.Text = "Połączono"; //TUTAJ BŁĄD
            }
            else
            {
                MessageBox.Show("Connection Error", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            serialPort1.Close();
        }

Dzięki użytkownikowi .AI problem został rozwiązany.

1

przerób sobie:

private delegate void SetLogDelegate(string Text);
private void SetLogText(string strText)
{
	this.LogLabel.Text = strText;
}

this.Invoke(new SetLogDelegate(this.SetLogText), "Połączono");
2

do poczytania o Invoke i InvokeRequired

1 użytkowników online, w tym zalogowanych: 0, gości: 1