UODOTNET文档没有明确说明多个线程可以使用会话实例,但它说“我们希望在多线程环境中使用UniObjects for .NET,......”。
我想要一些确认,这实际上意味着我可以同时在同一个UniSession实例上有两个SELECT。
我想如果它确实像这样工作那么它意味着SELECT必须引用不同的选择列表。这是对的吗?
答案 0 :(得分:0)
UniObjects不支持对多个并行操作使用相同的会话。本质上,使用相同的会话进行并行操作就像尝试在TCL一次做两件事。当我在不同的线程上尝试两个长时间运行选择时,我收到以下错误:
无法从传输连接中读取数据:通过调用WSACancelBlockingCall中断了阻塞操作。[IBM U2] [UODOTNET - UNIRPC] [ErrorCode = 81009] RPC失败
UniObjects 支持使用不同会话的并行线程。因为它们是不同的会话,所以除非您使用已保存的列表,否则选择列表不会发生冲突。
如果您担心许可,可以使用幻像来执行这些并行操作。 Phantoms允许基本程序异步运行。据我所知,幻影只在某些情况下使用许可证(EX:执行HTTP请求)。您的单线程.NET应用程序可以调用两次基本进程,每次运行您的选择并将结果保存到某个任意位置时创建一个幻像。我们使用以下PICK基本代码用幻像运行任意基本程序“PHANTOM.TEST”:
EXECUTE "PHANTOM PHANTOM.TEST ":RECORDID
我尽量避免使用幻影,因为我还没有找到一种优雅的方法来确定幻像已经完成运行。
Phantom许可参考:https://u2tc.rocketsoftware.com/documentation/PDF/1177927.pdf