我在AX2012上遇到了问题,我的观点是我必须在Dynamics中连接一个RS-232标尺。
我有工作离散模式(打开端口,接受当前权重,关闭端口),所以COM端口配置是很好的。
我的问题是当实现连续模式时(从端口连续读取,并执行逻辑来加权多个项目,而用户不必单击任何内容),而我在读取端口时,UI被冻结,甚至无法单击按钮来停止该过程。
我的问题是:是否可以在另一个线程不阻塞主(UI)线程的情况下做到这一点?
我正在阅读文档,但找不到任何清晰的东西。我想,只在一个线程中做所有的事情是不会成功的。
发布于 2012-12-10 21:31:34
AX不是多线程的,所以显而易见的答案是:不是。
然而,AX确实支持从事件循环调用的“轮询”调用(以某种形式)。使用可在所有对象上使用的setTimeOut方法。
有关工作示例,请参阅this question。
如果您可以执行非阻塞调用来测试是否有任何数据,那么这可能对您有效。
发布于 2013-03-06 18:44:42
在Ax中创建单独的线程是可能的,但是这样做的次数很少,也不可取。谷歌'Ax 2012 Thread MSDN‘获取信息。
在我看来,最好在C#中创建一个服务来处理通过COM端口进行通信的细节,并在必要时使用Business Connector来读/写记录。
发布于 2013-03-15 00:10:07
实现这种连续处理的推荐方法是创建一个定期运行的批处理作业。您可以从单个批处理作业执行中运行多个处理任务,并且可以从单个作业执行以编程方式创建此任务,因此您可以以这种方式模拟多线程,并具有良好的性能:
举个例子:
http://community.dynamics.com/ax/b/axilicious/archive/2012/02/24/business-operation-framework-and-multi-threading.aspx
https://stackoverflow.com/questions/13797392
复制相似问题