void InitTokenSegmenter() { Trace.WriteLine("InitTokenSegmenter Thread Start."); updating = true; try { using (ApplicationDbContext db = new ApplicationDbContext()) { var list = app.MemoryCache.Get("match_groups", () => db.MatchGroups.ToList()); updatedSegmenter = new PosSegmenter(); foreach (var item in list) { updatedSegmenter.AddWord(item.Name, 99999, ((int)item.Type).ToString() + "|" + item.Id); } File.WriteAllLines(user_dict_txt, list.Select(x => x.Name + "|" + (int)x.Type + "|" + x.Id).ToArray()); user_dict_load = true; } segmenter = updatedSegmenter; updatedSegmenter = null; } finally { Trace.WriteLine("InitTokenSegmenter Thread End."); updating = false; } }