Esempio n. 1
0
 /// <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)
     });
 }
Esempio n. 2
0
        /// <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);
        }