Connectivity Software User's Guide and Reference
SubscribeMultipleDataChanges Method
Example 



OpcLabs.EasyOpcUACore Assembly > OpcLabs.EasyOpc.UA Namespace > IEasyUAClientExtension Class : SubscribeMultipleDataChanges Method
The client object that will perform the operation.

The value of this parameter cannot be null (Nothing in Visual Basic).

Array of OpcLabs.EasyOpc.UA.OperationModel.UAMonitoredItemArguments. Array of argument objects specifying what and how to subscribe.

The value of this parameter cannot be null (Nothing in Visual Basic).

The individual elements of the parameter value cannot be null (Nothing in Visual Basic).

A callback method to be invoked for each significant monitored item change.

The value of this parameter cannot be null (Nothing in Visual Basic).

Subscribe to changes of multiple OPC monitored items with a data change callback method. The IEasyUAClient.DataChangeNotification event will be generated for each significant item change, and a specified callback method will be invoked.
Syntax
'Declaration
 
<ExtensionAttribute()>
<JetBrains.Annotations.NotNullAttribute()>
Public Shared Function SubscribeMultipleDataChanges( _
   ByVal client As IEasyUAClient, _
   ByVal monitoredItemArgumentsArray() As UAMonitoredItemArguments, _
   ByVal dataChangeCallback As EasyUADataChangeNotificationEventHandler _
) As Integer()
'Usage
 
Dim client As IEasyUAClient
Dim monitoredItemArgumentsArray() As UAMonitoredItemArguments
Dim dataChangeCallback As EasyUADataChangeNotificationEventHandler
Dim value() As Integer
 
value = IEasyUAClientExtension.SubscribeMultipleDataChanges(client, monitoredItemArgumentsArray, dataChangeCallback)
[Extension()]
[JetBrains.Annotations.NotNull()]
public static int[] SubscribeMultipleDataChanges( 
   IEasyUAClient client,
   UAMonitoredItemArguments[] monitoredItemArgumentsArray,
   EasyUADataChangeNotificationEventHandler dataChangeCallback
)

Parameters

client
The client object that will perform the operation.

The value of this parameter cannot be null (Nothing in Visual Basic).

monitoredItemArgumentsArray
Array of OpcLabs.EasyOpc.UA.OperationModel.UAMonitoredItemArguments. Array of argument objects specifying what and how to subscribe.

The value of this parameter cannot be null (Nothing in Visual Basic).

The individual elements of the parameter value cannot be null (Nothing in Visual Basic).

dataChangeCallback
A callback method to be invoked for each significant monitored item change.

The value of this parameter cannot be null (Nothing in Visual Basic).

Return Value

Array of System.Int32. The function returns an array of integer handle. Each handle uniquely identifies the monitored item subscription. The indices of elements in the output array are the same as those in the input array, monitoredItemArgumentsArray.

This method never returns null (Nothing in Visual Basic).

Exceptions
ExceptionDescription

A null reference (Nothing in Visual Basic) is passed to a method that does not accept it as a valid argument.

This is a usage error, i.e. it will never occur (the exception will not be thrown) in a correctly written program. Your code should not catch this exception.

Remarks

This is an extension method (info: C#, VB.NET). In languages that have support for extensions methods (such as C# and VB.NET), you can use the extension method as if it were a regular method on the object that is its first parameter. In other languages (such as with Python.NET), you will call the extension as a static method, and pass it the object on which it acts as its first parameter.

Example
// This example shows how to subscribe multiple data changes using a callback, and display the value of the monitored item
// with each change.
//
// Find all latest examples here: https://www.doc-that.com/files/onlinedocs/OPCLabs-ConnectivityStudio/Latest/examples.html .
// OPC client and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-ConnectivityStudio-CSharp .
// Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
// a commercial license in order to use Online Forums, and we reply to every post.

using System;
using OpcLabs.EasyOpc.UA;
using OpcLabs.EasyOpc.UA.OperationModel;

namespace UADocExamples._EasyUAClient
{
    class SubscribeMultipleDataChanges
    {
        public static void Main1()
        {
            UAEndpointDescriptor endpointDescriptor =
                "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer";
            // or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported)
            // or "https://opcua.demo-this.com:51212/UA/SampleServer/"

            // Instantiate the client object.
            var client = new EasyUAClient();

            Console.WriteLine("Subscribing...");
            client.SubscribeMultipleDataChanges(new[]
                {
                    new EasyUAMonitoredItemArguments(null, endpointDescriptor, 
                        "nsu=http://test.org/UA/Data/ ;i=10845", 1000),
                    new EasyUAMonitoredItemArguments(null, endpointDescriptor, 
                        "nsu=http://test.org/UA/Data/ ;i=10853", 1000),
                    new EasyUAMonitoredItemArguments(null, endpointDescriptor, 
                        "nsu=http://test.org/UA/Data/ ;i=10855", 1000)
                },
                (_, eventArgs) =>
                {
                    // Display value.
                    if (eventArgs.Succeeded)
                        Console.WriteLine($"{eventArgs.Arguments.NodeDescriptor}: {eventArgs.AttributeData.Value}");
                    else
                        Console.WriteLine($"{eventArgs.Arguments.NodeDescriptor} *** Failure: {eventArgs.ErrorMessageBrief}");
                });

            Console.WriteLine("Processing monitored item changed events for 10 seconds...");
            System.Threading.Thread.Sleep(10 * 1000);

            Console.WriteLine("Unsubscribing...");
            client.UnsubscribeAllMonitoredItems();

            Console.WriteLine("Waiting for 5 seconds...");
            System.Threading.Thread.Sleep(5 * 1000);

            Console.WriteLine("Finished.");
        }
    }
}
Requirements

Target Platforms: .NET Framework: Windows 10 (selected versions), Windows 11 (selected versions), Windows Server 2016, Windows Server 2022; .NET: Linux, macOS, Microsoft Windows

See Also