C#实现多线程时如何将底层服务与界面表现分离?
2007-08-27 20:47
731 查看
C/S。
多线程的网络服务端,一个界面线程,一个监听线程,n个对客户的服务线程。希望能将这三者完全分离。界面能够控制监听线程,能够开启或者中止监听线程;监听线程启动服务线程;服务线程将消息反馈给界面线程。
服务线程与界面之间的交互尤其难办。
界面显示服务线程的消息:所有的服务线程共享一个消息队列,线程接收消息后将消息写入该队列;界面创建一个新的线程,通过这个线程来读取队列的数据,也就是来自客户端的消息。
界面控制服务线程:将所有的线程对象保存到一个链表中,需要控制时将线程取出,然后对其控制;但如果socket关闭了,线程自动停止了,又会如何呢?
尽管能用,但似乎偶尔会出现cpu利用率99%的情况。怪哉。
感觉做的太复杂了些。
肯定有简单方法俺不晓得,晕乎。
多线程的网络服务端,一个界面线程,一个监听线程,n个对客户的服务线程。希望能将这三者完全分离。界面能够控制监听线程,能够开启或者中止监听线程;监听线程启动服务线程;服务线程将消息反馈给界面线程。
服务线程与界面之间的交互尤其难办。
界面显示服务线程的消息:所有的服务线程共享一个消息队列,线程接收消息后将消息写入该队列;界面创建一个新的线程,通过这个线程来读取队列的数据,也就是来自客户端的消息。
界面控制服务线程:将所有的线程对象保存到一个链表中,需要控制时将线程取出,然后对其控制;但如果socket关闭了,线程自动停止了,又会如何呢?
尽管能用,但似乎偶尔会出现cpu利用率99%的情况。怪哉。
感觉做的太复杂了些。
肯定有简单方法俺不晓得,晕乎。
相关文章推荐
- C# 优化基于插件的开发框架实现Ribbon界面与功能的分离附DEMO
- 【厚积薄发】编程技术项目总结2—Qt多线程实现汇总界面和底层计算分离
- 如何在c#里实现登陆界面
- flash开发中如何实现界面代码分离
- C#实现多线程界面刷新
- C#实现界面与功能的分离:Ribbon界面
- C#winform界面中如何显示当前时间,是用lable控件实现
- C#中如何使用Winform实现炫酷的透明动画界面
- C# 使用多线程如何传递两个以上参数的实现方法(附示例) 推荐
- C#实现多线程界面刷新
- C# 基于插件的开发框架实现Ribbon界面与功能的分离附DEMO
- C#笔记1——如何在登录界面设置主界面的ToolStripMenuItem的enabled属性,实现不同用户进入不同模块
- 如何用C#语言通过服务来实现开机启动?
- C#如何定制Excel界面并实现与数据库交互
- 用C#实现HTTP协议下的多线程文件传输
- java 如何实现动态代理(mybatis底层原理)
- [转]c#实现用SQL池(多线程),定时批量执行SQL语句
- C#实现支持断点续传多线程下载客户端工具类
- 11.2-全栈Java笔记:Java中如何实现多线程
- 如何:实现接口事件(C# 编程指南)