2

我在使用 AX 2012 时遇到问题,我的意思是我必须在 Dynamics 中连接 RS-232 秤。

我有工作离散模式(打开端口,获取当前权重,关闭端口),所以 COM 端口配置很好。

我的问题是在实现连续模式时(从端口连续读取,并执行逻辑来加权多个项目,而无需用户单击任何内容),而我正在读取端口,UI 被冻结,甚至无法单击按钮停止该过程。

我的问题是:这可以通过另一个不阻塞主(UI)线程的线程来完成吗?

我正在阅读文档,但找不到任何明确的内容。恕我直言,我认为只在一个线程中完成所有操作不会成功。

4

3 回答 3

2

AX 不是多线程的,所以显而易见的答案是:不。

然而,AX 确实支持从事件循环(以一种形式)调用的“轮询”调用。使用适用于所有对象的setTimeOut方法。

有关工作示例,请参阅此问题。

如果您可以进行非阻塞调用以测试是否有任何数据,这可能对您有用。

于 2012-12-10T13:31:33.530 回答
2

可以在 Ax 中创建单独的线程,但是很少这样做并且不建议这样做。谷歌“Axe 2012 Thread MSDN”获取信息。

在我看来,您最好在 C# 中创建一个服务来处理通过 COM 端口进行通信的具体细节,并在必要时使用 Business Connector 读取/写入记录。

于 2013-03-06T10:44:41.930 回答
0

实现这种连续处理的推荐方法是创建一个定期运行的批处理作业。您可以从单个批处理作业执行中运行多个处理任务,并且您可以从单个作业执行中以编程方式创建此任务,以便您可以通过这种方式模拟多线程并具有良好的性能:

一个例子:

http://community.dynamics.com/ax/b/axilicious/archive/2012/02/24/business-operation-framework-and-multi-threading.aspx

于 2013-03-14T16:10:06.580 回答