语音播报windows服务卡死问题!!!!!!

qq_31949639 2016-07-28 02:11:04
编写了一个windows服务,提供接口,接收到的信息放到队列里面,然后用系统里自带的tts播报出来,有另一个服务发送消息,但是用一段时间后服务会卡死,而且正常使用的时候还会占用的内存越来越多,卡死后只能重启才能卸载,正常卸载后服务列表里还有,但是安装时提示服务已经删除,代码很简单所以不知道有什么会导致现在这个这么麻烦,求优化????????????
...全文
199 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31949639 2016-07-28
  • 打赏
  • 举报
回复
里面的这个子线程是安装的时候就会打开,然后接口接收到信息后直接写到队列里
qq_31949639 2016-07-28
  • 打赏
  • 举报
回复
private static Queue ListQueue = new Queue(); private SpeechSynthesizer synth = new SpeechSynthesizer(); public Thread thrd2; LogClass log = new LogClass(); public void AddQueue(string msg) { lock (ListQueue) { try { int i = ListQueue.Count; if (i > 40) { ListQueue.Dequeue(); } else { ListQueue.Enqueue(msg); } string inmsg = string.Format("新信息进入:{0},线程数:{1}", msg, i.ToString()); log.WriteLog1(msg); } catch (Exception e) { log.WriteLog1(e.Message.ToString()); } } } public void Thread2() { try { while (true) { GC.Collect(); thrd2 = new Thread(new ThreadStart(Work)); thrd2.IsBackground = true; thrd2.Start(); Thread.Sleep(1000 * 60 * 30); } } catch (Exception ex) { log.WriteLog1("播报线程启动异常:" + ex.Message); } } public void Work() { lock (ListQueue) { try { log.WriteLog1("播报开启!!"); string msg = string.Empty; if (ListQueue.Count > 0) { msg = ListQueue.Dequeue().ToString(); } if (msg != null) { synth.Volume = 80; synth.Rate = 2; log.WriteLog1("语音内容:" + msg); synth.Speak(msg); } } catch (Exception e) { log.WriteLog1("语音播报异常:" + e.Message.ToString()); } } }

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧