namespace UADocExamples.AlarmsAndConditions { class Acknowledge { public static void Main1() { // Define which server we will work with. UAEndpointDescriptor endpointDescriptor = "opc.tcp://141.29.81.224:4840"; int numevents = 0; // Instantiate the client objects var client = new EasyUAClient(); IEasyUAAlarmsAndConditionsClient alarmsAndConditionsClient = client.AsAlarmsAndConditionsClient(); // To handle more than one event List nodeId = new List(); List eventId = new List(); var anEvent = new ManualResetEvent(initialState: false); Console.WriteLine("Subscribing..."); client.SubscribeEvent( endpointDescriptor, new UANodeDescriptor("ns=2;s=opcua/events.useralarms"), //user alarms node in SIMOTION 1000, (sender, eventArgs) => { if (!eventArgs.Succeeded) { Console.WriteLine("*** Failure: {0}", eventArgs.ErrorMessageBrief); return; } if (eventArgs.EventData != null) { UABaseEventObject baseEventObject = eventArgs.EventData.BaseEvent; Console.WriteLine(baseEventObject); nodeId.Add(baseEventObject.NodeId); //add the NodeId to the list eventId.Add(baseEventObject.EventId); //add the EventId to the list anEvent.Set(); numevents++; } }, state:null); Console.WriteLine("Waiting for an event for 30 seconds..."); if (!anEvent.WaitOne(30*1000)) { Console.WriteLine("Event not received."); return; } Console.WriteLine("Acknowledging all events..."); try { for (int i = 0; i < numevents; i++) { alarmsAndConditionsClient.Acknowledge( endpointDescriptor, nodeId[i], eventId[i], "Acknowledged by an automated example code."); //comment Console.WriteLine("Acknowledged event = {0}", i); } } catch (UAException uaException) { Console.WriteLine("*** Failure: {0}", uaException.GetBaseException().Message); } Console.WriteLine("Waiting for 5 seconds..."); Thread.Sleep(5 * 1000); Console.WriteLine("Unsubscribing..."); client.UnsubscribeAllMonitoredItems(); Console.WriteLine("Waiting for 5 seconds..."); Thread.Sleep(5 * 1000); } } }