我使用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);
*/
答案 0 :(得分:0)
(我的信誉点不足,因此无法添加评论)
我的经验是,尝试同时从不同线程进行连接时,ClientAce的行为异常。您可能有相同的情况。尝试彼此断开连接。
用Task.ContinueWith
尝试foreach
或await
(如this SO answer中的尝试)