private async void Login() { _cts = new CancellationTokenSource(); btnLogin.InvokeIfRequired(() => btnLogin.Text = "取消登录"); while (!_cts.IsCancellationRequested) { var client = new WebQQClient(notifyListener: _notifyListener, logger: new RichTextBoxLogger(tbMessage)); var result = await client.LoginWithQRCode().WhenFinalEvent(_cts.Token).ConfigureAwait(false); if (result.Type == QQActionEventType.EvtOK) { var key = client.Account.QQ.ToString(); if (_qqClients.ContainsKey(key)) { client.Destroy(); } else { _qqClients.Add(key, client); lvQQList.InvokeIfRequired(() => { AddQQToLv(client); }); } } } _cts = null; }
public static void Main(string[] args) { var threadActorDispatcher = new ThreadActorDispatcher(); IQQClient client = null; start: Console.Write("请输入QQ号:"); var username = Console.ReadLine(); Console.Write("请输入QQ密码:"); var password = Console.ReadLine(); client = new WebQQClient(username, password, handler, threadActorDispatcher); //测试同步模式登录 var future = client.Login(QQStatus.ONLINE, null); Console.WriteLine(client.Account.Username + "-登录中......"); var Event = future.WaitFinalEvent(); if (Event.Type == QQActionEventType.EVT_OK) { Console.WriteLine(client.Account.Username + "-登录成功!!!!"); var getUserInfoEvent = client.GetUserInfo(client.Account, null).WaitFinalEvent(); if (getUserInfoEvent.Type == QQActionEventType.EVT_OK) { Console.WriteLine(client.Account.QQ + "-用户信息:" + getUserInfoEvent.Target); client.GetBuddyList(null).WaitFinalEvent(); Console.WriteLine(client.Account.QQ + "-Buddy count: " + client.GetBuddyList().Count); foreach (var buddy in client.GetBuddyList()) { var f = client.GetUserQQ(buddy, null); var e = f.WaitFinalEvent(); var name = string.IsNullOrEmpty(buddy.MarkName) ? buddy.Nickname : buddy.MarkName; Console.WriteLine("{0}, {1}", buddy.QQ, name); } } //所有的逻辑完了后,启动消息轮询 client.BeginPollMsg(); } else if (Event.Type == QQActionEventType.EVT_ERROR) { var ex = (QQException)Event.Target; Console.WriteLine(ex.Message); client.Destroy(); goto start; } else { Console.WriteLine(client.Account.Username + "-登录失败"); client.Destroy(); goto start; } Console.WriteLine("按任意键退出"); Console.ReadLine(); }
public static void Main2(string[] args) { var threadActorDispatcher = new SimpleActorDispatcher(); IQQClient client = null; start: Console.Write("请输入QQ号:"); var username = Console.ReadLine(); Console.Write("请输入QQ密码:"); var password = Console.ReadLine(); client = new WebQQClient(username, password, Listener, threadActorDispatcher); //测试同步模式登录 var future = client.Login(QQStatus.ONLINE, null); client.Logger.LogInformation(client.Account.Username + "-登录中......"); var Event = future.WaitFinalEvent(); if (Event.Type == QQActionEventType.EvtOK) { client.Logger.LogInformation(client.Account.Username + "-登录成功!!!!"); var getUserInfoEvent = client.GetUserInfo(client.Account, null).WaitFinalEvent(); if (getUserInfoEvent.Type == QQActionEventType.EvtOK) { client.Logger.LogInformation(client.Account.QQ + "-用户信息:" + getUserInfoEvent.Target); client.GetBuddyList(null).WaitFinalEvent(); client.Logger.LogInformation(client.Account.QQ + "-Buddy count: " + client.GetBuddyList().Count); foreach (var buddy in client.GetBuddyList()) { var f = client.GetUserQQ(buddy, null); var e = f.WaitFinalEvent(); var name = string.IsNullOrEmpty(buddy.MarkName) ? buddy.Nickname : buddy.MarkName; client.Logger.LogInformation($"{buddy.QQ}, {name}"); } } //所有的逻辑完了后,启动消息轮询 client.BeginPollMsg(); } else if (Event.Type == QQActionEventType.EvtError) { var ex = (QQException)Event.Target; client.Logger.LogInformation(ex.Message); client.Destroy(); goto start; } else { client.Logger.LogInformation(client.Account.Username + "-登录失败"); client.Destroy(); goto start; } client.Logger.LogInformation("按任意键退出"); Console.ReadLine(); }
private async void Login() { _cts = new CancellationTokenSource(); btnLogin.InvokeIfRequired(() => btnLogin.Text = "取消登录"); while (!_cts.IsCancellationRequested) { var client = new WebQQClient(notifyListener: _notifyListener, logger: new RichTextBoxLogger(tbMessage)); var result = await client.LoginWithQRCode().WhenFinalEvent(_cts.Token).ConfigureAwait(false); if (result.Type == QQActionEventType.EvtOK) { var key = client.Account.QQ.ToString(); if (_qqClients.ContainsKey(key)) client.Destroy(); else { _qqClients.Add(key, client); lvQQList.InvokeIfRequired(() => { AddQQToLv(client); }); } } } _cts = null; }