Evite errores de hilo cruzado: actualice de forma segura los elementos UI de hilos no UI
Al interactuar con elementos de interfaz de usuario de subprocesos que no son UI (como los hilos generados por la recepción de eventos de los datos del puerto serie), los problemas de seguridad de los subprocesos deben manejarse para evitar errores de hilo cruzado.
en el código C#, el error "Operación de subproceso cruzado no es válido: el control de acceso 'Textbox1' desde un subproceso que no sea el hilo que creó el control 'Textbox1'" ocurre porque el subproceso de la interfaz de usuario posee el control de cuadros de texto, y accediendo a él De otro hilo causará conflictos de asociación de subprocesos.
Para resolver este problema, se debe usar un programador para permitir que los subprocesos apropiados (generalmente subprocesos de interfaz de usuario) accedan a los elementos de UI. En este caso, se pueden usar métodos de Delegate and Invoke para garantizar el acceso a Safe de Thread:
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;
}
}
ahora, en el controlador de eventos Serialport1_DatarCeived:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
txt = serialPort1.ReadExisting().ToString();
SetText(txt.ToString());
}
Usando el método SetText, puede delegar tareas que actualicen el atributo de texto TextBox1 al hilo de la interfaz de usuario, asegurando un acceso seguro y sin errores a los elementos de UI de los subprocesos que no son UI.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3