public async Task <Task> RefreshThread() { return(Task.Run(async() => { // 发送读取请求 Send_ReadMessageJson readJson = new Send_ReadMessageJson("read", viewModel.GetUserService().GetCurrentUserName()); await viewModel.SendMessageAsync(readJson); // 获得读取信息 Receive_ReadJson receivedJson = await viewModel.ReadMessageAsync(); if (receivedJson.jsonMessages == null) { // 如果没有更新,则保持原状 } else { // 如果有更新 this.Invoke(async() => { // 保存数据 await viewModel.SaveMessgaeAsync(receivedJson); // 刷新 await RefreshCollectionAsync(); await RefreshMessageListAsync(); }); } })); }
public async Task SaveMessgaeAsync(Receive_ReadJson receivedJson) { // 将返回的信息提出,逐个保存 if (receivedJson.jsonMessages != null) { foreach (var item in receivedJson.jsonMessages) { Message message = new Message() { dateTime = _userService.FromUnixTime(item.time), message = item.message, userName = item.from }; List <string> member = new List <string>(); foreach (var friend in item.room) { if (friend != _userService.GetCurrentUserName()) { member.Add(friend); } } string folderName = _userService.GetDisplayName(member); // 保存信息,如果不存在该会话,添加Detail.txt bool result = await _userService.AddMessageAsync(_userService.GetCurrentUserName(), folderName, message); if (!result) { await _userService.AddDetailAsync(_userService.GetCurrentUserName(), folderName, member); } } } }
public async Task <Receive_ReadJson> ReadMessageAsync() { // 读取信息,直到有响应/超过一段时间后再结束 if (!_webService.GetConnectStatus()) { await _webService.BuiildConnectionAsync(); } string data_received = _webService.Get_RawData(); DateTime beginTime = DateTime.Now; while (data_received == "" && ((DateTime.Now - beginTime).TotalSeconds < 10)) { await _webService.ReceiveAsync(); data_received = _webService.Get_RawData(); } // 解析数据,返回 Receive_ReadJson receive_ReadJson = new Receive_ReadJson() { jsonMessages = new List <JsonMessage>() }; JObject jObject = JObject.Parse(data_received); receive_ReadJson.state = (bool)jObject["state"]; JArray jarray = JArray.Parse(jObject["messages"].ToString()); for (int i = 0; i < jarray.Count; i++) { JObject messageObject = JObject.Parse(jarray[i].ToString()); JsonMessage message = new JsonMessage() { room = new List <string>() }; message.from = (string)messageObject["from0"]; message.message = (string)messageObject["message"]; message.time = (string)messageObject["time"]; JArray nameArray = JArray.Parse(messageObject["room"].ToString()); for (int j = 0; j < nameArray.Count; j++) { message.room.Add(nameArray[j].ToString()); } receive_ReadJson.jsonMessages.Add(message); } return(receive_ReadJson); }