) we're experiencing a crash when interacting with an OPC DA server.
we were successfully using a really old version of quickopc from 2018, and we had to revert back to it to keep the system running.
Our application is a windows service implemented in .net 4.7.x , running on windows 2016.
An unhandled exception is fired on system threadpool and leads to application crash.
Application: NeptuneDataCollector.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ArgumentException
at OpcLabs.EasyOpc.DataAccess.Implementation.HandleMappingEasyDAClient.GetInnerHandle(Int32)
at OpcLabs.EasyOpc.DataAccess.Implementation.HandleMappingEasyDAClient.ChangeMultipleItemSubscriptions(OpcLabs.EasyOpc.DataAccess.OperationModel.DAHandleGroupArguments[])
at OpcLabs.EasyOpc.DataAccess.Implementation.DelegatingEasyDAClient.InnerChangeMultipleItemSubscriptions(OpcLabs.EasyOpc.DataAccess.IEasyDAClient, OpcLabs.EasyOpc.DataAccess.OperationModel.DAHandleGroupArguments[])
at OpcLabs.BaseLib.Collections.Generic.Extensions.IReadOnlyListExtension+<>c__DisplayClass6_0`1[[System.ValueTuple`2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<IfThenElse>b__1(System.Collections.Generic.IReadOnlyList`1<System.ValueTuple`2<System.__Canon,System.__Canon>>)
at OpcLabs.BaseLib.Collections.Generic.Extensions.IReadOnlyListExtension.IfThenElse[[System.ValueTuple`2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.ValueTuple`2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Generic.IReadOnlyList`1<System.ValueTuple`2<System.__Canon,System.__Canon>>, System.Predicate`1<System.ValueTuple`2<System.__Canon,System.__Canon>>, System.Func`2<System.Collections.Generic.IReadOnlyList`1<System.ValueTuple`2<System.__Canon,System.__Canon>>,System.Collections.Generic.IEnumerable`1<System.ValueTuple`2<System.__Canon,System.__Canon>>>, System.Func`2<System.Collections.Generic.IReadOnlyList`1<System.ValueTuple`2<System.__Canon,System.__Canon>>,System.Collections.Generic.IEnumerable`1<System.ValueTuple`2<System.__Canon,System.__Canon>>>)
at OpcLabs.EasyOpc.DataAccess.Implementation.DelegatingEasyDAClient.DelegatedChangeMultipleItemSubscriptions(System.Collections.Generic.IReadOnlyList`1<OpcLabs.EasyOpc.DataAccess.OperationModel.DAHandleGroupArguments>)
at OpcLabs.EasyOpc.DataAccess.Implementation.DelegatingEasyDAClient.ChangeMultipleItemSubscriptions(OpcLabs.EasyOpc.DataAccess.OperationModel.DAHandleGroupArguments[])
at OpcLabs.EasyOpc.DataAccess.Implementation.HandleMappingEasyDAClient.ChangeMultipleItemSubscriptions(OpcLabs.EasyOpc.DataAccess.OperationModel.DAHandleGroupArguments[])
at OpcLabs.EasyOpc.DataAccess.Implementation.EasyDAClientCompositor.ChangeMultipleItemSubscriptions(OpcLabs.EasyOpc.DataAccess.OperationModel.DAHandleGroupArguments[])
at OpcLabs.BaseLib.Collections.Generic.Extensions.IEnumerableExtension.ForAll[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Action`1<System.__Canon>)
at OpcLabs.EasyOpc.DataAccess.Optimization.Implementation.RequestChunkingEasyDAClient.ChangeMultipleItemSubscriptions(OpcLabs.EasyOpc.DataAccess.OperationModel.DAHandleGroupArguments[])
at OpcLabs.EasyOpc.DataAccess.Implementation.DelegatingEasyDAClient.ChangeMultipleItemSubscriptions(OpcLabs.EasyOpc.DataAccess.OperationModel.DAHandleGroupArguments[])
at OpcLabs.EasyOpc.DataAccess.Implementation.DelegatingEasyDAClient.ChangeMultipleItemSubscriptions(OpcLabs.EasyOpc.DataAccess.OperationModel.DAHandleGroupArguments[])
at OpcLabs.EasyOpc.DataAccess.Implementation.HandleMappingEasyDAClient.ChangeMultipleItemSubscriptions(OpcLabs.EasyOpc.DataAccess.OperationModel.DAHandleGroupArguments[])
at OpcLabs.EasyOpc.DataAccess.Implementation.StateLockingEasyDAClient.OnLastUnlockState()
at OpcLabs.EasyOpc.DataAccess.Implementation.StateLockingEasyDAClient.UnlockState()
at OpcLabs.EasyOpc.DataAccess.Optimization.Implementation.SubscriptionBlendingEasyDAClient.SubscribeMultipleItems(OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments[])
at OpcLabs.EasyOpc.DataAccess.Implementation.HandleMappingEasyDAClient.MappedSubscribeMultipleItems(System.Collections.Generic.Dictionary`2<Int32,OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments>)
at OpcLabs.EasyOpc.DataAccess.Implementation.DelegatingEasyDAClient+<>c__DisplayClass11_0.<SubscribeMultipleItems>b__1()
at OpcLabs.EasyOpc.DataAccess.Implementation.DelegatingEasyDAClient+<>c__DisplayClass110_0.<QueueBackEndAction>b__0()
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at OpcLabs.BaseLib.Threading.WorkItem.Execute()
at OpcLabs.BaseLib.Threading.FifoExecution.ProcessQueuedItems(System.Object)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()