public ISubscription SubscribeAsync <T>(Func <T, MessageContext, Task> subscribeMethod, Action <ISubscriptionConfigurationBuilder> configuration = null) { var subscribeWrapper = new Func <T, MessageContext, Task>((arg1, context) => { var subscribeTask = subscribeMethod(arg1, context); subscribeTask.ContinueWith(task => { if (task.IsFaulted == false) { MessageProcessedEvent?.Invoke(); } }); return(subscribeTask); }); return(_client.SubscribeAsync(subscribeWrapper, configuration)); }
public string Init() { try { ////Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); ////AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; LogableClass.ToLog("实例化接口", "开始"); if (client == null) { client = new Client(); } LogableClass.ToLog("启动二维码", "开始"); if (DisplayByFrm) { qrForm = new QrCodeForm(); } LogableClass.ToLog("指定响应事件", "开始"); //获取登陆之后记录的cookie,实现推送手机端登陆,取代扫码 //若不需要,注释掉以下代码即可 client.ExceptionCatched += Client_ExceptionCatched;; client.GetLoginQrCodeComplete += Client_GetLoginQrCodeComplete;; client.CheckScanComplete += Client_CheckScanComplete;; client.LoginComplete += Client_LoginComplete; client.DelContactListComplete += Client_DelContactListComplete;; client.ModContactListComplete += Client_ModContactListComplete; client.GetContactComplete += Client_GetContactComplete;; client.BatchGetContactComplete += Client_BatchGetContactComplete;; client.MPSubscribeMsgListComplete += Client_MPSubscribeMsgListComplete;; client.LogoutComplete += Client_LogoutComplete;; if (DisplayByFrm) { frm = new frm_MainWin(client); client.ReceiveMsg += RefreshMsg; this.MsgProcessCompleted += frm.RefreshMsg; } else { client.ReceiveMsg += Client_ReceiveMsg; } //client.GetContactComplete += frm.RefreshContact; Console.WriteLine("小助手启动"); LogableClass.ToLog("小助手启动", "开始"); //获取群成员详情,需要我们主动调用,一般用不到,因为群里已经包含Member基本信息。 //Contact chatRoom = contactDict["群UserName"]; //string listStr = string.Join(",", chatRoom.MemberList); //client.GetBatchGetContactAsync(listStr, chatRoom.UserName); return(""); } catch (Exception ce) { LogableClass.ToLog("错误", "初始化接口失败!", string.Format("{0}:{1}", ce.Message, ce.StackTrace)); return(string.Format("{0}:{1}", ce.Message, ce.StackTrace)); } }