如何断开RSLinx OPC服务器的连接?

时间:2019-08-20 02:34:41

标签: c# opc-da

我使用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);
*/

1 个答案:

答案 0 :(得分:0)

(我的信誉点不足,因此无法添加评论)

我的经验是,尝试同时从不同线程进行连接时,ClientAce的行为异常。您可能有相同的情况。尝试彼此断开连接。

Task.ContinueWith尝试foreachawait(如this SO answer中的尝试)