namespace Comm
{
/// <summary>
/// 定义事件发布
/// </summary>
public class GlobalEventPublisher
{
// 定义自定义事件
public static event EventHandler<CustomEventArgs> CustomEvent;
// 触发事件的方法
public static void RaiseCustomEvent(string message)
{
CustomEvent?.Invoke(null, new CustomEventArgs { Message = message });
}
}
// 自定义事件参数类
public class CustomEventArgs : EventArgs
{
public string Message { get; set; }
}
/// <summary>
/// 定义事件订阅者
/// </summary>
public class GlobalEventSubscriber
{
private Action<string> ac;
public GlobalEventSubscriber(Action<string> ac)
{
this.ac = ac;
// 订阅全局事件
GlobalEventPublisher.CustomEvent += OnCustomEvent;
}
// 事件处理程序
private void OnCustomEvent(object sender, CustomEventArgs e)
{
if (ac!=null)
{
ac(e.Message);
}
}
// 取消订阅(可选)
public void Unsubscribe()
{
GlobalEventPublisher.CustomEvent -= OnCustomEvent;
}
}
}
//发布者
GlobalEventPublisher.RaiseCustomEvent("DataReload");//通知面板数据更新
//订阅者
//创建订阅
GlobalEventSubscriber globalEventSubscriber = new GlobalEventSubscriber(SubscriberCallBack);
/// <summary>
/// 订阅回调
/// </summary>
/// <param name="type"></param>
private void SubscriberCallBack(string type)
{
try
{
if(type== "DataReload")
{
Dispatcher.UIThread.InvokeAsync(() => {
#region 执行数据刷新
#endregion
});
}
}
catch(Exception ex)
{
Dispatcher.UIThread.InvokeAsync(() =>
{
ToastService.Error(_toastManager, "提示", ex.Message.ToString());
});
}
}