Specifies that you wish that the
EasyDAClientCore object instance works with an "isolated" connection to the OPC server, i.e. one that is not shared with other instances.
Syntax
public bool Isolated {get; set;}
public:
property bool Isolated {
bool get();
void set ( bool value);
}
'Declaration
Public Property Isolated As Boolean
'Usage
Dim instance As EasyDAClientCore
Dim value As Boolean
instance.Isolated = value
value = instance.Isolated
Example
.NET
// This example shows how to create and use two isolated client objects, resulting in two separate connections to the target
// OPC DA server.
//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
using System;
using System.Diagnostics;
using System.Threading;
using OpcLabs.EasyOpc.DataAccess;
using OpcLabs.EasyOpc.DataAccess.OperationModel;
namespace DocExamples.DataAccess._EasyDAClient
{
class Isolated
{
public static void Main1()
{
// Instantiate the client objects and make them isolated
var client1 = new EasyDAClient { Isolated = true };
var client2 = new EasyDAClient { Isolated = true };
// The callback is a local method the displays the value
void ItemChangedCallback(object sender, EasyDAItemChangedEventArgs eventArgs)
{
Debug.Assert(!(eventArgs is null));
string displayPrefix = $"[{eventArgs.Arguments.State}]";
if (eventArgs.Succeeded)
{
Debug.Assert(!(eventArgs.Vtq is null));
Console.WriteLine($"{displayPrefix} {eventArgs.Vtq}");
}
else
Console.WriteLine($"{displayPrefix} *** Failure: {eventArgs.ErrorMessageBrief}");
}
Console.WriteLine("Subscribing...");
client1.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000, ItemChangedCallback, state: 1);
client2.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000, ItemChangedCallback, state: 2);
Console.WriteLine("Processing item changed events for 10 seconds...");
Thread.Sleep(10 * 1000);
Console.WriteLine("Unsubscribing...");
client1.UnsubscribeAllItems();
client2.UnsubscribeAllItems();
Console.WriteLine("Waiting for 2 seconds...");
Thread.Sleep(2 * 1000);
}
}
}
# This example shows how to create and use two isolated client objects, resulting in two separate connections to the
# target OPC DA server.
#
# Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
# OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python .
# The QuickOPC package is needed. Install it using "pip install opclabs_quickopc".
import opclabs_quickopc
import time
# Import .NET namespaces.
from OpcLabs.EasyOpc.DataAccess import *
# Item changed event handler
def itemChangedCallback(sender, eventArgs):
assert eventArgs is not None
displayPrefix = '[{}]'.format(eventArgs.Arguments.State)
if eventArgs.Succeeded:
assert eventArgs.Vtq is not None
print(displayPrefix + ' ' + eventArgs.Vtq.ToString() + '\n', end='')
else:
print(displayPrefix + ' *** Failure: ' + eventArgs.ErrorMessageBrief + '\n', end='')
# Instantiate the client objects and make them isolated.
client1 = EasyDAClient()
client1.Isolated = True
client2 = EasyDAClient()
client2.Isolated = True
print('Subscribing item changes...')
IEasyDAClientExtension.SubscribeItem(client1,
'', 'OPCLabs.KitServer.2', 'Simulation.Random', 1000,
EasyDAItemChangedEventHandler(itemChangedCallback), 1)
IEasyDAClientExtension.SubscribeItem(client2,
'', 'OPCLabs.KitServer.2', 'Simulation.Random', 1000,
EasyDAItemChangedEventHandler(itemChangedCallback), 2)
print('Processing item change notifications for 10 seconds...')
time.sleep(10)
print('Unsubscribing all items...')
client1.UnsubscribeAllItems()
client2.UnsubscribeAllItems()
print('Waiting for 2 seconds...')
time.sleep(2)
print('Finished.')
' This example shows how to create and use two isolated client objects, resulting in two separate connections to the target
' OPC DA server.
'
' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
Imports OpcLabs.EasyOpc.DataAccess
Imports OpcLabs.EasyOpc.DataAccess.OperationModel
Namespace DataAccess._EasyDAClient
Partial Friend Class Isolated
Shared Sub Main1()
' Instantiate the client objects and make them isolated
Dim client1 As New EasyDAClient() With {.Isolated = True}
Dim client2 As New EasyDAClient() With {.Isolated = True}
' The callback is a local method the displays the value
Dim ItemChagedCallback = Sub(sender As Object, eventArgs As EasyDAItemChangedEventArgs)
Debug.Assert(eventArgs IsNot Nothing)
Dim displayPrefix As String = $"[{eventArgs.Arguments.State}]"
If eventArgs.Succeeded Then
Debug.Assert(eventArgs.Vtq IsNot Nothing)
Console.WriteLine($"{displayPrefix} {eventArgs.Vtq}")
Else
Console.WriteLine($"{displayPrefix} *** Failure: {eventArgs.ErrorMessageBrief}")
End If
End Sub
Console.WriteLine("Subscribing...")
client1.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000, ItemChagedCallback, state:=1)
client2.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000, ItemChagedCallback, state:=2)
Console.WriteLine("Processing item changed events for 10 seconds...")
Threading.Thread.Sleep(10 * 1000)
Console.WriteLine("Unsubscribing...")
client1.UnsubscribeAllItems()
client2.UnsubscribeAllItems()
Console.WriteLine("Waiting for 2 seconds...")
Threading.Thread.Sleep(2 * 1000)
End Sub
End Class
End Namespace
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