Client and Subscriber Development > Development Models > Imperative Programming Model > Imperative Programming Model for OPC Classic A&E > Subscribing to Information (OPC A&E) > Unsubscribing from OPC A&E Events |
If you no longer want to receive event notifications, you need to unsubscribe from them. To unsubscribe from events that you have previously subscribed to, call the UnsubscribeEvents method, passing it the subscription handle.
// This example shows how to unsubscribe from specific event notifications. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . using System; using System.Threading; using OpcLabs.EasyOpc.AlarmsAndEvents; using OpcLabs.EasyOpc.AlarmsAndEvents.OperationModel; namespace DocExamples.AlarmsAndEvents._EasyAEClient { class UnsubscribeEvents { public static void Main1() { // Instantiate the client object. using (var client = new EasyAEClient()) { var eventHandler = new EasyAENotificationEventHandler(client_Notification); client.Notification += eventHandler; Console.WriteLine("Subscribing..."); int handle = client.SubscribeEvents("", "OPCLabs.KitEventServer.2", 1000); Console.WriteLine("Waiting for 10 seconds..."); Thread.Sleep(10 * 1000); Console.WriteLine("Unsubscribing..."); client.UnsubscribeEvents(handle); Console.WriteLine("Waiting for 10 seconds..."); Thread.Sleep(10 * 1000); } } // Notification event handler static void client_Notification(object sender, EasyAENotificationEventArgs e) { if (!e.Succeeded) { Console.WriteLine("*** Failure: {0}", e.ErrorMessageBrief); return; } if (!(e.EventData is null)) Console.WriteLine(e.EventData.Message); } } }
# This example shows how to unsubscribe from specific event notifications. # # 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 import * from OpcLabs.EasyOpc.AlarmsAndEvents import * # Notification event handler def notification(sender, e): if not e.Succeeded: print('*** Failure: ', e.ErrorMessageBrief, sep='') return else: if e.EventData is not None: print(e.EventData.Message) # Instantiate the client object client = EasyAEClient() client.Notification += notification print('Subscribing events...') handle = IEasyAEClientExtension.SubscribeEvents(client, '', 'OPCLabs.KitEventServer.2', 1000) print('Waiting for 10 seconds...') time.sleep(10) print('Unsubscribing events...') client.UnsubscribeEvents(handle) print('Waiting for 10 seconds...') time.sleep(10) client.Notification -= notification print('Finished.')
' This example shows how to unsubscribe from specific event notifications. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Imports System.Threading Imports OpcLabs.EasyOpc.AlarmsAndEvents Imports OpcLabs.EasyOpc.AlarmsAndEvents.OperationModel Namespace AlarmsAndEvents._EasyAEClient Friend Class UnsubscribeEvents Public Shared Sub Main1() Using client = New EasyAEClient() Dim eventHandler = New EasyAENotificationEventHandler(AddressOf client_Notification) AddHandler client.Notification, eventHandler Console.WriteLine("Subscribing...") Dim handle As Integer = client.SubscribeEvents("", "OPCLabs.KitEventServer.2", 1000) Console.WriteLine("Waiting for 10 seconds...") Thread.Sleep(10 * 1000) Console.WriteLine("Unsubscribing...") client.UnsubscribeEvents(handle) Console.WriteLine("Waiting for 10 seconds...") Thread.Sleep(10 * 1000) End Using End Sub ' Notification event handler Private Shared Sub client_Notification(ByVal sender As Object, ByVal e As EasyAENotificationEventArgs) If Not e.Succeeded Then Console.WriteLine("*** Failure: {0}", e.ErrorMessageBrief) Exit Sub End If If e.EventData IsNot Nothing Then Console.WriteLine(e.EventData.Message) End If End Sub End Class End Namespace
Rem This example shows how to unsubscribe from specific event notifications. Rem Rem Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Option Explicit Dim ServerDescriptor: Set ServerDescriptor = CreateObject("OpcLabs.EasyOpc.ServerDescriptor") ServerDescriptor.ServerClass = "OPCLabs.KitEventServer.2" Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.EasyAEClient") WScript.ConnectObject Client, "Client_" WScript.Echo "Subscribing..." Dim SubscriptionParameters: Set SubscriptionParameters = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.AESubscriptionParameters") SubscriptionParameters.NotificationRate = 1000 Dim handle: handle = Client.SubscribeEvents(ServerDescriptor, SubscriptionParameters, True, Nothing) WScript.Echo "Waiting for 10 seconds..." WScript.Sleep 10*1000 WScript.Echo "Unsubscribing..." Client.UnsubscribeEvents handle WScript.Echo "Waiting for 10 seconds..." WScript.Sleep 10*1000 Rem Notification event handler Sub Client_Notification(Sender, e) If Not (e.Succeeded) Then WScript.Echo "*** Failure: " & e.ErrorMessageBrief Exit Sub End If If Not e.EventData Is Nothing Then WScript.Echo e.EventData.Message End Sub
You can also unsubscribe from all events you have previously subscribed to (on the same instance of EasyAEClient object) by calling the UnsubscribeAllEvents method.
// This example shows how to unsubscribe from all event notifications. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . using System; using System.Threading; using OpcLabs.EasyOpc.AlarmsAndEvents; using OpcLabs.EasyOpc.AlarmsAndEvents.OperationModel; namespace DocExamples.AlarmsAndEvents._EasyAEClient { class UnsubscribeAllEvents { public static void Main1() { // Instantiate the client object. using (var client = new EasyAEClient()) { var eventHandler = new EasyAENotificationEventHandler(client_Notification); client.Notification += eventHandler; Console.WriteLine("Subscribing..."); client.SubscribeEvents("", "OPCLabs.KitEventServer.2", 1000); Console.WriteLine("Waiting for 10 seconds..."); Thread.Sleep(10 * 1000); Console.WriteLine("Unsubscribing..."); client.UnsubscribeAllEvents(); Console.WriteLine("Waiting for 10 seconds..."); Thread.Sleep(10 * 1000); } } // Notification event handler static void client_Notification(object sender, EasyAENotificationEventArgs e) { if (!e.Succeeded) { Console.WriteLine("*** Failure: {0}", e.ErrorMessageBrief); return; } if (!(e.EventData is null)) Console.WriteLine(e.EventData.Message); } } }
# This example shows how to unsubscribe from all event notifications. # # 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 import * from OpcLabs.EasyOpc.AlarmsAndEvents import * # Notification event handler def notification(sender, e): if not e.Succeeded: print('*** Failure: ', e.ErrorMessageBrief, sep='') return else: if e.EventData is not None: print(e.EventData.Message) # Instantiate the client object client = EasyAEClient() client.Notification += notification print('Subscribing events...') IEasyAEClientExtension.SubscribeEvents(client, '', 'OPCLabs.KitEventServer.2', 1000) print('Waiting for 10 seconds...') time.sleep(10) print('Unsubscribing events...') client.UnsubscribeAllEvents() print('Waiting for 10 seconds...') time.sleep(10) client.Notification -= notification print('Finished.')
' This example shows how to unsubscribe from all event notifications. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Imports System.Threading Imports OpcLabs.EasyOpc.AlarmsAndEvents Imports OpcLabs.EasyOpc.AlarmsAndEvents.OperationModel Namespace AlarmsAndEvents._EasyAEClient Friend Class UnsubscribeAllEvents Public Shared Sub Main1() Using client = New EasyAEClient() Dim eventHandler = New EasyAENotificationEventHandler(AddressOf client_Notification) AddHandler client.Notification, eventHandler Console.WriteLine("Subscribing...") client.SubscribeEvents("", "OPCLabs.KitEventServer.2", 1000) Console.WriteLine("Waiting for 10 seconds...") Thread.Sleep(10 * 1000) Console.WriteLine("Unsubscribing...") client.UnsubscribeAllEvents() Console.WriteLine("Waiting for 10 seconds...") Thread.Sleep(10 * 1000) End Using End Sub ' Notification event handler Private Shared Sub client_Notification(ByVal sender As Object, ByVal e As EasyAENotificationEventArgs) If Not e.Succeeded Then Console.WriteLine("*** Failure: {0}", e.ErrorMessageBrief) Exit Sub End If If e.EventData IsNot Nothing Then Console.WriteLine(e.EventData.Message) End If End Sub End Class End Namespace
Rem This example shows how to unsubscribe from all event notifications. Rem Rem Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Option Explicit Dim ServerDescriptor: Set ServerDescriptor = CreateObject("OpcLabs.EasyOpc.ServerDescriptor") ServerDescriptor.ServerClass = "OPCLabs.KitEventServer.2" Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.EasyAEClient") WScript.ConnectObject Client, "Client_" WScript.Echo "Subscribing..." Dim SubscriptionParameters: Set SubscriptionParameters = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.AESubscriptionParameters") SubscriptionParameters.NotificationRate = 1000 Client.SubscribeEvents ServerDescriptor, SubscriptionParameters, True, Nothing WScript.Echo "Waiting for 10 seconds..." WScript.Sleep 10*1000 WScript.Echo "Unsubscribing..." Client.UnsubscribeAllEvents WScript.Echo "Waiting for 10 seconds..." WScript.Sleep 10*1000 Rem Notification event handler Sub Client_Notification(Sender, e) If Not (e.Succeeded) Then WScript.Echo "*** Failure: " & e.ErrorMessageBrief Exit Sub End If If Not e.EventData Is Nothing Then WScript.Echo e.EventData.Message End Sub
If you are no longer using the parent EasyAEClient object, you should unsubscribe from the events, or dispose of the EasyAEClient object, which will do the same for you. Otherwise, the subscriptions will internally be still alive, and may cause problems related to COM reference counting.
Copyright © 2004-2024 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Send Documentation Feedback. Resources: Knowledge Base, Product Downloads. Technical support: Online Forums, FAQ.Missing some example? Ask us for it on our Online Forums! You do not have to own a commercial license in order to use Online Forums, and we reply to every post.