0

我使用 Kepware 的 Clientace 与 RSLinx OPC Server 进行通信。但是,我无法断开 RSLinx OPC Server。当我不使用 Parallel.Foreach 时,我可以断开服务器。但是,当我使用 Parallel.Foreach 时,我无法断开连接。我没有收到 Kepware 的 Clientace 的回复。如何断开服务器?

[code]
DaServerMgt daServerMgt = new DaServerMgt();
...
// Disconnect
daServerMgt.Disconnect(); <--- hanging when I use Parallel.Foreach to write value.

// Write
// I use Parallel code for Performance
Parallel.Foreach(tags, (tag) =>
{
    ...
    // itemIdentifiers / itemValues each has only one tag
    daServerMgt.Write(ref itemIdentifiers, itemValues);
    ...
});

/*
// itemIdntifiers / itemValues each has a lot of tags.
daServerMgt.Write(ref itemIdentifiers, itemValues);
*/
4

1 回答 1

0

(我没有足够的声望点,所以我不能添加评论)

我有过这样的经验,当尝试同时从不同的线程连接时,ClientAce 的行为会出乎意料。你可能有同样的情况。尝试一个接一个地断开连接。

尝试使用Task.ContinueWithforeach使用await(如this SO answer

于 2019-12-06T14:22:29.267 回答