1. 例子1
private void UdpRxCallBackFunc(UdpDataStruct info)
{// 1. 前置檢查防止無效調用if (textBoxOutput2.IsDisposed || !textBoxOutput2.IsHandleCreated)return;// 2. 使用正確的委托類型Invoke(new Action(() =>{// 3. 雙重檢查確保安全if (textBoxOutput2.IsDisposed) return;try{// 4. 安全更新UItextBoxOutput2.Text = csdataUtil.ByteArrayToHexStr(info.buf, 0, info.length);}catch (Exception ex){// 5. 異常處理(可替換為日志記錄)Console.WriteLine($"UDP更新失敗: {ex.Message}");}}));
}
2. 例子2,安全更新封裝方法
public static void SafeUpdate(Control control, Action updateAction)
{if (control.InvokeRequired)control.Invoke(updateAction);elseupdateAction();
}// 使用
SafeUpdate(textBox1, () =>
{textBox1.Text = "Updated safely";textBox1.BackColor = Color.Green;
});
3. 什么情況下使用委托