We have been using ArcGis for our online WPF application since several months now and after some tweaks to fix the problems we faced we now have a functional online cartography tool inside our application.
We developped recently an offline mode for the same WPF application allowing users to use the application without being connected and synchronize their data with our servers once they're back on the connected mode.
To do so, we followed the normal 2 step process :
- The first step is downloading the local arcgis db, when online the user select the area he wish to download on the map we then use the GenerateGeodatabaseAsync function to retrieve this portion.
- The second step is once the user has done his modifications in the offline mode, we synchronize his local arcgis db using the SyncGeodatabaseAsync function with the one on our server.
In most cases it works fine. But we frequently run into various problems that seem to appear all along this process.
- Sometimes the local arcgis db file get corrupted and can no longer be synchronized, we are forced to delete it manually on the user machine and then redownload it as in the first step, losing all the modifications the user had made before.
- Sometimes the setting of the result of the TaskCompletionSource to the GeoDatabaseStatusInfo throw an InvalidOperationException on the SyncGeodatabaseAsync task when the user tries to synchronize.
After a lot of digging, we could not find the reason(s) of these bugs nor could we reproduce them consistently.
Some elements that could help :
- Users are often on very bad/slow network that may have micro-cuts.
- We use a dedicated database & server for the ArcGis services and data, our application business database and services are on a different server.
Could you point us where to look to fix thoses recurring problems and stabilize the ArcGis synchronization ?