private void ChatMessageEvetRiser() { Task.Factory.StartNew(async() => { if (_FFChatMessageArrived.HandlersCount == 0) { SpinWait.SpinUntil(() => _FFChatMessageArrived.HandlersCount > 0); } while (_KeepWorking) { try { FFChatMsg ffChatMsg = new FFChatMsg(); if (_FFxivChat.TryDequeue(out ffChatMsg)) { var ea = new ChatMessageArrivedEventArgs(this) { ChatMessage = ffChatMsg }; await _FFChatMessageArrived.InvokeAsync(ea); } else { SpinWait.SpinUntil(() => _FFxivChat.IsEmpty == false && _KeepWorking == true); } } catch (Exception e) { Logger.WriteLog(e); } } }, TaskCreationOptions.LongRunning); }
private void ProcessChatMsg(ChatLogItem chatLogItem) { var tmpMsg = new FFChatMsg(chatLogItem.Line, chatLogItem.Code, chatLogItem.TimeStamp); _FFxivChat.Enqueue(tmpMsg); }