I am thinking it is the higher number of labels (180) causing the issue as well -because it seems to work with a limited number. It will choke around 100 or so and sometimes further down, sometimes it will do all of them.
I am not sure how your driver is coded internally , but my guess is your subscriptions are added to a list of some sort and it is the remove and add that get in the way of each other. It does seem to behave like an issue with access to the list removing and inserting. If I update a second time - the update seems to work (obviously fewer changes). Perhaps it would be nice to be able to do a bulk Address Change where a bulk of Addresses are removed first and then added - for example as a group. This might be more efficient for the driver. In my application I have basically the same layout for 4 to 6 Forms - I auto generate the form with the Labels. On any given form load I need to change the base address from System01, to System02 etc.. So I would like to have a single form with the layout and simply change the IO points. On the Button_Click handler. For System01, System02 etc... similar to System01_Click(sender as object, e as eventargs) ChangeSystem("System01") End
ChangeSystem(systemName As String) ' Iterate Addresses and change to systemName.
Each of my labels has to do an unsubscribe and a resubscribe - I am sure other things are happening at the same time inside the driver - it makes it inefficient . So if I could unsubscribe all labels as a group, and then Subscribe them as a different group of addresses ) I would be doing a bulk unsubscribe, then resubscribe .. Much like using SuspendLayout , ResumeLayout on a Winform control.