小弟正在做一个串口通讯的项目,在接收串口返回的数据时试图使用队列保存数据(串口数据不定时陆续返回),同时要对数据进行分解处理及写DB,因此考虑用两个线程(生产者与消费者)解决,思路如下:定义一个队列的类,用来建立队列、提供“入列”和“出列”的方法和线程同步机制;
定义生产者和消费者类;主线程中:
 
    创建队列类的对象;
    ......
    串口返回数据-》激发事件
    {
        读串口获取数据;
        创建“入列”线程;
        创建“出列”线程;
        启动“入列”线程;
        启动“出列”线程;
        “入列”线程.Join();
        “出列”线程.Join(); 
    }    这样的设计思路是否周全,请有此类开发经验的高手襄助!谢谢!

解决方案 »

  1.   

    你是要自己实现COM口的读写吗?我以前在PDA上使用过COM口通信的程序,微软提供了一个实现,可惜找不到那里可以下载了,好像在GotDotNet上有。另外在CodeProject上也有类似的东东,可以参考一下:
    http://www.codeproject.com/dotnet/DotNetComPorts.asp
      

  2.   

    我刚才提到的那个实现在这里可以下载:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/PISAPICF.asp是Compact Framework,不过应该对普通Framework也同样适用,请参考。
      

  3.   

    请问zgtt(闻涛) ,为什么不用Join()?
      

  4.   

    本人刚学C#不久,也遇到同样的问题,数据采集程序一旦启动,cpu资源消耗严重!!!!!!!!!1