为什么我的对象被另一个线程使用? 您所在的位置:网站首页 threadstart_new_thread 为什么我的对象被另一个线程使用?

为什么我的对象被另一个线程使用?

#为什么我的对象被另一个线程使用?| 来源: 网络整理| 查看: 265

如果lbConnections是一个客户端控件,你不能从一个后台线程修改它 - 你必须调用,将做GUI线程上更新的方法。在GUI控件上实际上没有线程安全性,并且所有禁用Control.CheckForIllegalCrossThreadCalls的功能都会让您在脚下自拍时变得不那么明显。

一般而言,您还有其他问题。例如,您的处理程序线程总是试图抓取最后一个连接 - 在处理线程尝试抓取套接字之前,有两种连接可能发生(并且都会添加到nSockets中) - 这意味着一个套接字永远不会被抓住一个人抓住两次。另外,它看起来像你从来没有实际处理任何套接字对象,甚至不允许它们是GCd,因为我没有看到任何从nSockets中移除的代码。

你确实有两个很好的选择 - 要么传递处理线程所需的数据,要么使用类似队列的东西,并让处理线程出列一个套接字并对其进行操作(当然,所有的队列访问都必须同步)。无论哪种方式,你应该处理的插座,而不是永远保持它们。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有