private void GetHistoryByChannel(ChatRule.CHAT_CHANNEL channel, LocalDataReadDelegate del) { string folderNameWithChannel = folderName + "/" + channel; if (!GetIsHaveHistory()) { Directory.CreateDirectory(folderName); } if (!Directory.Exists(folderNameWithChannel)) { if (del != null) { del(new List <AllChatHistoryData>()); } return; } string[] fileArr = Directory.GetFiles(folderNameWithChannel); List <string> fileList = fileArr.ToList <string>(); fileList.Sort(delegate(string left, string right) { int length = left.Length; string leftFile = left.Substring(length - 8, 8); string rightFile = right.Substring(length - 8, 8); int sizeLeft, sizeRight; int.TryParse(leftFile, out sizeLeft); int.TryParse(rightFile, out sizeRight); return(sizeLeft - sizeRight); }); if (fileList.Count > maxFileCount) { int count = fileList.Count; for (int i = 0; i < count - maxFileCount; i++) { string path = fileList[0]; fileList.RemoveAt(0); File.Delete(path); } } Queue <string> fileQueue = new Queue <string>(); for (int i = fileList.Count - 1; i >= 0; --i) { fileQueue.Enqueue(fileList[i]); } if (fileQueue.Count > 0) { GetData(fileQueue, del); } }
public void GetData(Queue <string> fileQueue, LocalDataReadDelegate del) { m_readThreadQueue.Enqueue(fileQueue); m_onReadDoneDelegateQueue.Enqueue(del); ThreadUpdate(); }