Hi team,
I have noticed a performance problem accessing (recursively traversing) all cameras/camera groups configuration tree from the Management client plug-in. On my development system with 4 recording servers and ~1000 cameras traversing the cameras tree takes more than 1 minute when executing code from the Management Client plug-in (cameras (most of them StableFPS but this doesn’t matter) actually are duplicated many times in groups and subgroups to simulate large VMS system). Also each time my update starts there is annoying UI freezing in the Management client application - occurs each time my traverse method invokes Item.GetChildren(). On the other hand running same code from the Smart Client takes just few seconds without any application freezing (the results returned are the same).
I have tried different changes/workarounds without any success:
- run my update on different thread (not UI thread) using new ThreadStart(MyUpdateMethod) instead of DispatcherTimer ticks
- tried using Background plug-in loaded in Administration environment (along with the Management client plug-in)
- using Item.GetChildrenAsync(AsyncCallback, …) method in my recursion calls
I have checked ConfigAccessViaSDK sample but loading cameras/groups on-demand is not my case - I need whole configuration tree as I should show cameras per recording server but still keep groups structure (each camera item holds its recording server ID property, this way I can build subtree for each server).
Any suggestions will be very helpful.
Thanks,
Nikolay.