C# winform 调用 OPC UA C# WinForm 的批量订阅方法
调用 OPC UA C# WinForm 的批量订阅方法
要调用 BatchNodeIdDatasSubscription
方法进行批量订阅,你需要准备三个参数:订阅关键字、节点ID数组和回调方法。以下是完整的调用示例:
调用示例
// 1. 定义订阅的关键字(必须唯一)
string subscriptionKey = "MyBatchSubscription_001";// 2. 准备要订阅的节点ID数组
string[] nodeIds = new string[]
{"ns=2;s=Device1/Parameter1","ns=2;s=Device1/Parameter2","ns=2;s=Device2/Temperature"
};// 3. 定义回调方法
Action<string, MonitoredItem, MonitoredItemNotificationEventArgs> callback = (key, monitoredItem, args) =>
{// 这里处理订阅到的数据var notification = args.NotificationValue as MonitoredItemNotification;if (notification != null){// 获取节点值var value = notification.Value.Value;// 在UI线程上更新界面(如果是WinForm应用)this.Invoke((MethodInvoker)delegate {// 显示接收到的数据textBoxLog.AppendText($"Key: {key}, NodeId: {monitoredItem.StartNodeId}, Value: {value}, Timestamp: {notification.Value.SourceTimestamp}\r\n");});}
};// 4. 调用批量订阅方法
BatchNodeIdDatasSubscription(subscriptionKey, nodeIds, callback);
实际应用中的建议
- 订阅键管理:确保每个订阅键是唯一的,便于后续管理或取消订阅
- 错误处理:考虑添加更多错误处理逻辑
- 取消订阅:实现对应的取消订阅方法
- UI更新:确保回调中的UI更新操作通过Invoke执行
取消订阅示例
public void Unsubscribe(string key)
{if (ConnectStatus){try{opcUaClient.RemoveSubscription(key);}catch (Exception ex){string str = "取消订阅失败!!!";ClientUtils.HandleException(str, ex);}}
}// 调用取消订阅
Unsubscribe("MyBatchSubscription_001");