Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengemas kini TextBox dengan Selamat dari Port Serial dalam C#?

Bagaimana untuk Mengemas kini TextBox dengan Selamat dari Port Serial dalam C#?

DDD
DDDasal
2025-01-23 02:13:07291semak imbas

How to Safely Update a TextBox from a Serial Port in C#?

Menyelesaikan Pengecualian Cross-Thread Apabila Mengemas kini Kotak Teks daripada Port Bersiri dalam C#

Masalah biasa dalam komunikasi bersiri C# melibatkan pengemaskinian TextBox daripada pengendali acara serialPort1_DataReceived. Oleh kerana port bersiri beroperasi pada urutan yang berasingan, mengakses TextBox secara langsung daripada pengendali acara ini membuang pengecualian "Operasi lintasan tidak sah".

Penyelesaian memerlukan kaedah selamat benang untuk mengemas kini teks TextBox. Ini dicapai dengan menyusun kemas kini kembali ke urutan UI. Begini caranya:

<code class="language-csharp">delegate void SetTextCallback(string text);

private void SetText(string text)
{
    if (this.textBox1.InvokeRequired)
    {
        SetTextCallback d = new SetTextCallback(SetText);
        this.Invoke(d, new object[] { text });
    }
    else
    {
        this.textBox1.Text = text;
    }
}</code>

Kaedah SetText ini menyemak sama ada utas semasa ialah utas UI (textBox1.InvokeRequired). Jika tidak, ia menggunakan Invoke untuk mengawal panggilan SetText semula ke urutan UI, memastikan keselamatan rangkaian. Jika tidak, ia mengemas kini TextBox secara langsung.

Berikut ialah cara untuk menyepadukan ini ke dalam serialPort1_DataReceived pengendali acara anda:

<code class="language-csharp">private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
    string receivedData = serialPort1.ReadExisting();
    SetText(receivedData); // Use the thread-safe SetText method
}</code>

Pengendali acara yang disemak ini membaca data daripada port bersiri dan menggunakan kaedah SetText untuk mengemas kini TextBox dengan selamat, menghalang pengecualian lintasan benang. Pendekatan ini menjamin bahawa kemas kini UI sentiasa dilakukan pada urutan yang betul, mengekalkan kestabilan aplikasi.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini TextBox dengan Selamat dari Port Serial dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn