【发布时间】:2013-10-02 14:22:21
【问题描述】:
目前我正在开发一个应用程序,该应用程序通过串行端口从 RFID 读卡器接收数据。数据,然后数据应该通过 TCP/IP 发送到服务器。
我已经让这两个东西都工作了,但不是同时工作。我可以从卡上读取 ID,也可以向服务器发送一些文本。但我想请教您的建议,这两个东西协同工作的最佳解决方案是什么。
目前我在两个类中有 TCP/IP 使用和串行使用。从主类创建两个类的对象并启动一个从串行端口读取数据的线程。
我应该尝试这样的事情吗?
在类中,我将只创建串行使用对象并调用处理读取的线程。在该读取线程内部,我将调用一个新线程,该线程将打开 TCP/IP 连接并发送从串行端口接收到的数据。
另一种类似的方法会从主类打开两个连接,但它会从串行端口接收线程启动 TCP/IP 发送线程(通过已经打开的连接)。
我在线程方面没有太多经验,所以这就是我向软件开发人员寻求帮助的原因。谢谢! (如果有帮助,我可以在此处粘贴部分代码)。
更新:
这就是提示,我会仔细研究您的建议。我想这是个好主意,但正如我所说,我在线程方面没有太多经验。如果我在这些类中创建单独的线程,并且它们都将使用相同的对象,比如说消息类的对象,我将在 COM 处理线程中创建新对象,并且 TCP/IP 处理线程将使用该对象,它会起作用吗?通过 TCP/IP 从它发送数据?我可以像使用 List 一样制作 Message 类的对象队列吗?另外,我如何将在类中的一个线程中创建的对象队列传递给另一个线程
【问题讨论】:
-
查看我的博客文章 Simple multithreading, part 2 以获取使用
BlockingCollection的示例。示例读取和写入文件,但概念相同:输入线程读取文件并将数据排队。输出线程读取消息队列并写入输出文件。该示例有两个队列,因为中间有一个处理步骤,但您可以消除处理步骤并使用单个队列。
标签: c# multithreading sockets tcp serial-port