c#如何重构我的程序以进行线程化
问题
我有一个不断的数据包流.每次传入新包(间隔为100毫秒)时,都会弹出一个事件,我将包发送到一个类来处理数据并将其可视化.不幸的是,如果在处理当前程序包之前发送了新程序包,则可能会中止程序包的进程. 我现在有什么 是一个用作另一个程序的DLL的代码. 我有几个类,其中一个是处理所有包.这个类有50个属性,25个函数和1000行代码.计算只需要6个函数. 我需要改变什么 所以现在我想使用List来缓冲所有传入的数据. 我有什么想法 将提到的类拆分为2个单独的类. 我什么都不知道 由于设置类包含处理类所需的重要属性,因此我不知道如何做到最好,因为处理类还需要更改/填充设置类中的缓冲区.但是这个将由主线程调用.或者最好不拆分设置和处理类并保持原样?我不熟悉线程并阅读这本免费电子书Threading in C#的第一章 解决方法
我只是添加一个队列并实现一个线程进行处理.这将有助于您跳过并且几乎不需要更改.通过拆分设置来重构代码似乎是很多工作,几乎没有什么好处和可能的新bug.
添加队列; >创建一个ConcurrentQueue(这是线程安全的lifo,这是你需要的) var cq=new ConcurrentQueue<Packets>(); >将所有数据包添加到该队列 cq.Enqueue(newPacket); >创建另一个循环并处理队列的线程 if (cq.TryDequeue(out newPacket)) { // Visualize new packet } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |