在C#中,異步線程與UI線程通信通常使用委托和事件來實現。以下是一種常見的方法:
// 定義委托
public delegate void UpdateUIHandler(string message);
// UI線程中創建委托實例
UpdateUIHandler updateUI = new UpdateUIHandler(UpdateUIMethod);
// 異步線程中調用委托
updateUI.Invoke("Hello from async thread!");
// UI線程中的方法
private void UpdateUIMethod(string message)
{
label1.Text = message;
}
// 定義事件
public event EventHandler<UpdateUIEventArgs> UpdateUIEvent;
// UI線程中訂閱事件
UpdateUIEvent += UpdateUIEventHandler;
// 異步線程中觸發事件
UpdateUIEvent?.Invoke(this, new UpdateUIEventArgs("Hello from async thread!"));
// UI線程中的事件處理方法
private void UpdateUIEventHandler(object sender, UpdateUIEventArgs e)
{
label1.Text = e.Message;
}
// UpdateUIEventArgs類
public class UpdateUIEventArgs : EventArgs
{
public string Message { get; }
public UpdateUIEventArgs(string message)
{
Message = message;
}
}
通過使用委托和事件,可以在異步線程與UI線程之間進行安全的通信,確保界面更新的正確性和靈活性。