跳到主要内容

SetMonitoringMode

每个 MonitoredItem 有 3 种 monitoring mode:

Mode服务端采样服务端推送用途
Disabled (0)××完全停 (不采也不推)
Sampling (1)×采样但不推 (记历史 / 死区计算)
Reporting (2, 默认)正常运作
前置阅读
  • 想停整条订阅 (而不是逐 MI) 看下面 PublishingEnabled.
  • 修改采样参数请看 Modify.

批量切

public IReadOnlyList<StatusCode> SetMonitoringMode(
MonitoringMode mode,
IReadOnlyList<uint> miHandles);
// 临时停止全部采集 (例如设备维护期间)
var statuses = sub.SetMonitoringMode(MonitoringMode.Disabled, allHandles);

单 MI 切

public StatusCode SetMode(uint monitoredItemHandle, MonitoringMode mode);
sub.SetMode(handle, MonitoringMode.Disabled);   // 暂停某个 MI
sub.SetMode(handle, MonitoringMode.Reporting); // 恢复

整条订阅启停 (PublishingEnabled)

如果想停整条订阅 (而不是逐 MI), 用 PublishingEnabled:

sub.PublishingEnabled = StatusCode.Good;  // 等价 true → SetPublishingMode(true)
sub.PublishingEnabled = StatusCode.Bad; // 等价 false
备注

当前 API 复用 StatusCode 表示开关 (Good=on, Bad=off), 后续版本会改成 bool 更直观.


三种粒度对比

粒度API适用
整条订阅sub.PublishingEnabled临时全停 (维护)
一批 MIsub.SetMonitoringMode(mode, handles)部分模块停
单 MIsub.SetMode(handle, mode)精细控制
完全删除sub.Remove(handle) / sub.Dispose()永久不要了

下一步