C#实现多线程时如何将底层服务与界面表现分离?

     C/S。

    多线程的网络服务端,一个界面线程,一个监听线程,n个对客户的服务线程。希望能将这三者完全分离。界面能够控制监听线程,能够开启或者中止监听线程;监听线程启动服务线程;服务线程将消息反馈给界面线程。

    服务线程与界面之间的交互尤其难办。

   界面显示服务线程的消息:所有的服务线程共享一个消息队列,线程接收消息后将消息写入该队列;界面创建一个新的线程,通过这个线程来读取队列的数据,也就是来自客户端的消息。

    界面控制服务线程:将所有的线程对象保存到一个链表中,需要控制时将线程取出,然后对其控制;但如果socket关闭了,线程自动停止了,又会如何呢?

   尽管能用,但似乎偶尔会出现cpu利用率99%的情况。怪哉。

   感觉做的太复杂了些。

  肯定有简单方法俺不晓得,晕乎。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用C#中的多线程来查询数据库数据。下面是一个示例代码,演示了如何在多个线程中查询数据库数据: ```csharp using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Threading; class Program { static void Main() { // 创建多个线程 List<Thread> threads = new List<Thread>(); for (int i = 0; i < 5; i++) { Thread thread = new Thread(() => { // 在每个线程中执行查询操作 string connectionString = "YourConnectionString"; string query = "SELECT * FROM YourTable"; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(query, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { // 处理查询结果 Console.WriteLine(reader[0].ToString()); } reader.Close(); } }); threads.Add(thread); } // 启动所有线程 foreach (Thread thread in threads) { thread.Start(); } // 等待所有线程完成 foreach (Thread thread in threads) { thread.Join(); } Console.WriteLine("查询完成"); } } ``` 在上面的示例中,我们创建了一个包含5个查询线程的列表。每个线程都会连接到数据库并执行相同的查询操作。请注意,在实际使用中,你需要根据你的数据库连接字符串和查询语句进行相应的更改。 通过启动和等待所有线程程序将会同执行多个查询操作。最后,当所有线程完成,打印出"查询完成"的消息。 这个示例代码可以帮助你理解如何在C#中使用多线程查询数据库数据。但要注意,使用多线程查询数据库可能会增加数据库的负载和并发连接数,请根据实际需求进行评估和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值