public async Task Login(UserInfo userInfo, Action <ResponseInfo> action) { var stream = _client.Login(userInfo); try { await RecieveDataLoop(stream, action); } catch (Exception ex) { HandleException(ex); } }
static void DoWork() { var command = string.Empty; var user = new UserInfo(); while (true) { switch (command.ToLower()) { case "login": user.Status = Status.Online; Console.WriteLine("输入用户名"); user.Name = Console.ReadLine(); Console.WriteLine("输入id"); try { user.Id = ulong.Parse(Console.ReadLine()); } catch { Console.WriteLine("输入id为一串数字"); break; } _client.Login(user, new Action <ResponseInfo>(obj => { if (obj is ResponseInfo) { switch (((ResponseInfo)obj).Code) { case 1: var userInfo = JsonConvert.DeserializeObject <UserInfo>(((ResponseInfo)obj).JsonData); Console.WriteLine($"{userInfo.Name}:{userInfo.Status}"); break; case 2: var messageInfo = JsonConvert.DeserializeObject <SendMessageInfo>(((ResponseInfo)obj).JsonData); Console.WriteLine($"{messageInfo.SenderId}:{messageInfo.MessageData}"); break; } } })); break; case "sendmessage": if (user.Id != 0) { Console.WriteLine("请输入发送的消息....."); _client.SendMessage(new SendMessageInfo() { SenderId = user.Id, MessageData = Console.ReadLine(), IsBoard = true }).Wait(); } else { Console.WriteLine("请先登录......"); } break; case "": break; default: Console.WriteLine("无法识别该命令"); break; } if (command.ToLower() == "quit") { Console.WriteLine("即将退出客户端........."); Thread.Sleep(1000); return; } command = Console.ReadLine(); } }