【问题标题】:How can I disconnect RSLinx OPC Server?如何断开 RSLinx OPC 服务器?
【发布时间】:2019-08-20 02:34:41
【问题描述】:

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

【问题讨论】:

    标签: c# opc-da


    【解决方案1】:

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

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

    尝试使用Task.ContinueWith 或foreach 和await(如this SO answer)

    【讨论】:

    • 没有代表不允许您将 cmets 放在“答案”部分。请删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多