在工作中遇到的两个难题

    在做项目的时候,遇到了这样两个比较难解决的问题。

    第一个问题,先简单的描述一下。我们是想实现这样一个功能:我们的程序运行在我们自己的优盘里。这些优盘是带有无线自动组网功能的,它是区分主从盘的。而且其中一个是主盘,其余都是从盘。主盘可以发送东西给从盘,也可以与从盘通信。我们的目的是当主盘发送东西给从盘以后,需要发送一个消息给从盘,从盘就响应事件。从而执行我们的操作。在这个过程中出现的情况是:第一,单独发送消息没有问题,单独发送文件也没有问题。但是一起发送的时候消息发送成功的概率就很低 第二,文件和消息一起发送的时候就存在消息再也发送不成功了。   经过我们了解调试硬件程序发现,它的从盘响应事件的处理有问题:它原本的思路是这样的,就是在底层有一个时钟每隔一秒就查询从盘是否收到了消息,如果收到了得话,那么把消息读出来,响应事件,否则的话,就继续轮询。这样的话,就会造成软件与底层的时钟公用一个进程,一旦软件层有需要用到进程中的资源,那么即使消息来了,也轮询不到。更不会把消息读出来,这样下次消息来的话,因为前面的消息没有读取,造成堵塞。后来就想到应该轮询的过程做到一个线程里。

  这样解决以后,前面的问题倒是解决了,但是又出现另外一个问题就是事件不能马上响应,必须要鼠标点击一下软件层的界面才会响应。然后就是在响应的事件中不能销毁资源。原因是这样的:前面的过程把事件放到另外一个线程里。到了软件层面调用响应事件的时候实际上还是会在轮询线程中执行,这样的话,一旦销毁软件层面的资源会出现,正在用不能销毁的系统提示。解决的办法是:在响应事件里发送WINDOW系统消息,自己在软件层面捕获消息再执行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值