网友对我的一部分问题的回答

修][.NET架构](120555124) 10:55:12
TO:樱木花道-c#
主线程挂了后台线程完全不影响会继续执行下去。
你之所以会考虑这个问题就是当时设计这个线程间通讯协议上有缺陷,单向的发送消息比较高效但是会产生你上述的问题。

你不妨考虑改成两次握手协议,后台发送消息后主线程返回一个消息(或者一个单纯的返回值也行),后台线程接受到该消息后才会继续执行或者其他什么做法随你。

更健全一点的设计是,你可以用一个单独线程来负责通讯和维护后台线程的运行状况。中转消息,监听响应时间(以决定是否超时之类的),判断情况并发送消息通知后台线程的运行和挂起退出等等
[马修][.NET架构](120555124) 10:55:19
个人愚见,仅供参考


2)008:

你可以定义一个枚举,用来描述你的工具死掉的原因,然后定义一个全局变量(错误枚举),然后主线程执行时,如果不正常,那就把这个全局变量赋值为对应的错误类型。定时器判断这个类型就可以了
樱木(512328769) 11:02:03
catch很多的,因为导致工具死掉的地方很多,应该在每个catch都要关掉定时器吧
/tp008(27194751) 11:02:43
一关一开的多麻烦,定时器判断主线程是否正常就可以啦


3)
修给看下啊:如果while里面加sleep(10秒)这样合适吗?

修][待业男](120555124) 15:47:22
10秒太大了啊,这个休眠时间设置最好要考虑的是响应时间和资源开销。

如果你用一个消息引擎(就是这个死循环)来处理所有的消息,那么休眠时间可以设小点。如果针对不同消息使用不同引擎的话,可以适当增加一点以减少系统开销

如果用定值的话,几百毫秒左右比较适合吧

修][待业男](120555124) 15:48:06
另外比较建议的是这类值都扔到CONFIG里去,以后适应不同需求的时候,可以不用重新编译

用定时器的话就是多线程了。。我的模块用的是多线程
4)
帮我调程序热心肠 9:54:55
如果你不想用Ajax的话,这个根本实现不了,就算你写在ASPX也不行,首先你要了解Web的本质,它是一种Request - Response的模式,只有Client Request了,Server才能Response,那么你想在Server执行一个Request的时候返回一些东西到Client,然后还能继续执行后面的,再返回一些东西到Client ,这个是不现实的
我是你的影迷 9:55:15

你可能感兴趣的:(问题)