/// <summary> /// 获取故事情节 /// </summary> /// <param name="item"></param> private static void GetStoryContent(NovelLead item) { try//目的是为了,不允许线程内部异常 { string[] storyArray = item.Story.Split('|'); for (int i = 0; i < storyArray.Length; i++) { if (flag)//表示是第一个事件 { lock (obj) { WriteStory(item, storyArray[i]); if (flag) { Console.ForegroundColor = System.ConsoleColor.Gray; CommonLog.WriteLogText("天龙八部就此拉开序幕。。。。"); flag = false; } } } else { WriteStory(item, storyArray[i]); } Thread.Sleep(1000); } } catch (Exception ex) { CommonLog.WriteLogText(ex.Message); } }
/// <summary> /// 输出故事情节 /// </summary> /// <param name="item"></param> /// <param name="story"></param> private static void WriteStory(NovelLead item, string story) { if (!cts.IsCancellationRequested) { Console.ForegroundColor = (System.ConsoleColor)item.FontColor;//设置字体颜色 CommonLog.WriteLogText(story); } }
/// <summary> /// 等待线程 /// </summary> /// <param name="watch"></param> /// <param name="taskFactory"></param> /// <param name="taskList"></param> private static void WaitThread(Stopwatch watch, TaskFactory taskFactory, List <Task> taskList) { taskFactory.ContinueWhenAny(taskList.ToArray(), t =>//当一个线程数组中任意一个线程执行完成后执行以下内容 { if (!cts.IsCancellationRequested) { Console.ForegroundColor = System.ConsoleColor.Gray; CommonLog.WriteLogText(string.Format("{0}已经做好准备啦。。。。", t.AsyncState)); } }); taskFactory.ContinueWhenAll(taskList.ToArray(), t =>//当一个线程数组中全部线程执行完成后执行以下内容 { if (!cts.IsCancellationRequested) { CommonLog.WriteLogText("中原群雄大战辽兵,忠义两难一死谢天"); } else { CommonLog.WriteLogText("天降雷霆灭世,天龙八部的故事就此结束...."); } watch.Stop(); CommonLog.WriteLogText(string.Format("******************天龙八部故事完美结束,本故事耗时{0}毫秒*************************", watch.ElapsedMilliseconds)); }); }