We have started getting error #116 when one of the machines starts up and accesses their program before the other. Sometimes it does it and sometimes it does not.
Usually this is caused by one of two similar conditions:
1. The WGE (let's call it "A") that is normally acting as the server of the data, i.e. the "gateway", has not started up yet, and isn't initializing itself quickly enough in response to the request from the other WGE (let's call it "B"). Usually, this would not be a problem because the gateway locator (a file named "~pvsw~.loc") is deleted when the gateway WGE closes its last file, but the file can stick around if, say, the user just shuts their system down before all files are closed.
2. WGE "A" is configured to "Return to minimal state if inactive" and doesn't respond quickly enough when WGE "B" makes a request.
In either case, if the gateway locator file weren't present and WGE "A" didn't respond, "B" would become the server of the data, even though the data is on "A". Then, when the user of "A" launches your app, it will see the gateway locator file, see that "B" is the gateway machine, and make requests to that WGE instead of opening the files itself.
It all gets kinda weird, but most of the time works okay.
The best way to "simplicate" all of this is to install WGE "A" to run as a service so that it is always available, just like a server, and configure it to:
Accept Remote Requests (the default), NOT Use Remote Engine, USE Local Engine, Allocate Resources at Startup (NOT the default) and NOT Return to Minimal State if Inactive.
Then, configure WGE "B" to:
NOT Accept Remote Requests (NOT the default), Use Remote Engine, NOT Use Local Engine, Allocate Resources at Startup (NOT the default) and NOT Return to Minimal State if Inactive.
Only v9.5 and v10 can be installed to run as a service. I have a little utility that installs 9.5 as a service, and v10 includes that option during setup.