/// <summary> /// Event handler for when a setting is updated /// </summary> public void RaiseBroadcastMessengerValueChanged(object o, BroadcastMessageKey broadcastMessageKey) { BroadcastMessengerValueChanged?.Invoke(this, new BroadcastMessengerEventArgs() { Args = new KeyValuePair <BroadcastMessageKey, object>(broadcastMessageKey, o) }); }
/// <summary> /// Awaitable task that handles the need for a response /// </summary> public Task <object> AwaitMessageValueChanged(BroadcastMessageKey key) { var taskCompletionSource = new TaskCompletionSource <object>(); Instance.BroadcastMessengerValueChanged += handler; void handler(object o, BroadcastMessengerEventArgs e) { if (e.Args.Key == key) { Instance.BroadcastMessengerValueChanged -= handler; Instance.RaiseBroadcastMessengerValueChanged(e.Args.Value, key); taskCompletionSource.TrySetResult(e.Args.Value); } } return(taskCompletionSource.Task); }