/// <summary> /// Send AsyncMessage.<br/> /// Important!!: If not found receiver then freeze. /// </summary> /// <typeparam name="TMessage">wrapped message type</typeparam> /// <typeparam name="TResult">return type</typeparam> /// <param name="self"></param> /// <param name="message">wrapped message</param> /// <returns></returns> public static async Task <TResult> SendAsync <TMessage, TResult>(this IMessenger self, TMessage message) where TMessage : MessageBase { var asyncMessage = new AsyncMessage <TMessage>(message); self.Send(asyncMessage); return((TResult)await asyncMessage.Task); }
/// <summary> /// Send AsyncMessage.<br/> /// Important!!: If not found receiver then freeze. /// </summary> /// <typeparam name="TMessage">wrapped message type</typeparam> /// <param name="self"></param> /// <param name="message">wrapped message</param> /// <returns></returns> public static Task SendAsync <TMessage>(this IMessenger self, TMessage message) where TMessage : MessageBase { var asyncMessage = new AsyncMessage <TMessage>(message); self.Send(asyncMessage); return(asyncMessage.Task); }
private async void ReceiveAsyncMessage(AsyncMessage <TMessage> m) { try { var result = await this.callback(m.InnerMessage); m.SetResult(result); } catch (Exception ex) { m.SetException(ex); } }