Hello.
This message box does not come from QuickOPC. It comes from Windows. Google for "This action cannot be completed because the other program is busy" (
www.google.com/search?q=%22This+action+cannot+be+completed+b...3j0j3&sourceid=chrome&ie=UTF-8 ).
I have seen it with other programs too. As far as I can tell, it can appear in any UI-based program that uses COM, and seem to work similar to this:
If the program is using COM objects from its main (UI) thread, it may make a COM call (in our case, it will be e.g. some call on the EasyUAClient object). Many COM calls return quickly, but some may block for a considerable amount of time (which is probably the case you mentioned - if there are connection problems).
Normally, the UI thread does so-called "message pumping", i.e. it receives the Windows messages related to user input, and is responsible for pulling the from the queue, and processing them. When it is temporarily blocked in the COM call, it cannot do the message pumping.
My estimate is that when there is user input *and* Windows detects that the program cannot currently handle it, because it is being blocked in the COM call, it shows this message box. Unfortunately, in principle there is nothing that the user can do except wait for the completion of the operation anyway.
Do I understand it correctly that in your case, the message box appears even if the user does not do anything? (no mouse movements, nothing pressed on keyboard)?
If so, couldn't it be due to use of Windows timers (which are also handled via the Windows queue?) Are you using some timer to do you periodic operations, or how do you achieve the periodic operations mentioned ("I test machine states and alarms every second.")?
Best regards