在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线程之间进行安全的通信,确保界面更新的正确性和灵活性。