c# 在线程中接收到的数据,我要根据数据内容进行处理,请问应该使用什么方法?
就是要把收到的数据处理一下然后发出去,我现在是这样的,一个线程收数据,在启动一个线程发数据,这两个线程中间使用一个公共的容器来保证他们的数据同步,我在想应该是个什么样的设...
就是要把收到的数据处理一下然后发出去,我现在是这样的,一个线程收数据,在启动一个线程发数据,这两个线程中间使用一个公共的容器来保证他们的数据同步,我在想应该是个什么样的设计思路,我没有开发经验,就是看了点书,就这么实现了,想问问正常的开发逻辑应该是什么样,专有名词是什么。
展开
展开全部
启动一个线程进行监听客户端连接,每连接上一个则为该连接专门新建一个线程进行接收数据,数据接收到之后将数据解析后,根据不同情况再进行处理,需要主窗体进行显示处理的话,这时可以通过委托异步begininvoke交给主线程进行处理,这时主要做一些界面显示工作,如果不需要直接在接收线程里发送数据就好了
更多追问追答
追问
是对接受的东西进行处理,接收的数据像case一样有很多选项,我现在是在接收线程里直接发送,可是占cpu利用率很高,是怎么回事。我感觉是要对所有的接收到的数据进行判断导致的,因为我知道,启动接收线程以后,他就把cpu利用率提的很高,如果只是对有效数据进行接收就好了,可是我不知道怎么判断,请指点,谢谢!
追答
你这个可能是在接收线程中,调用了ui线程,这样是不安全的,不知道你是怎么发送数据的,但涉及到ui线程里面的控件,一定要用ui线程自己去处理,work线程和ui线程分工一定要清楚。
不知道我对“只是对有效数据进行接收就好了”这个问题有没有理解错:收发数据的话,你可以使用对象序列化和对象反序列化,即定义一个数据类,类中有一个字段表示类型,然后将实例化的对象再序列化发过去,服务器接收到之后,对它反序列化,获取到该对象的类型,你再判断是不是自己想要的,就是无数个case,都不属于,你就可以抛弃了它。
展开全部
意义不明/.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这明显要用异步来处理...具体的说不清楚,异步就是更牛逼一点的类似于线程的东西
追问
有没有类似资料
追答
网上一搜一大把...找个代码比较短的运行一下,就知道了。异步就是另一个线程的事件...另一个线程指的是代码不在当前线程中执行,事件是指在某个情况下执行(针对你的问题而言,就是在接到数据时执行)。所以你的问题总结一下就是,使用异步可以做到,在接到数据的时候会触发一个事件...注册这个事件,做你想做的吧骚年。
哦,这些个事件注册起来不是用+=,一般都是直接传委托进去,我也不知道为什么搞得这么麻烦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询