//await CreateReplica(url, layerNumList, thisExtent, gdbName, geodatabasePath, gdbExt,prog); private static async Task CreateReplica(string featureServiceUrl, IEnumerable<int> layerNumList, Geometry geometry, string gdbNameNoExt, string geodatabasePath, string gdbExt, IProgress<string> prog) { try { DateTime begin = DateTime.UtcNow; var generationProgress = new Progress<GeodatabaseStatusInfo>(); Int64 i = 0; generationProgress.ProgressChanged += (sender, s) => { i++; }; //setup parameters var geodatabaseSyncTask = new GeodatabaseSyncTask(new Uri(featureServiceUrl)); FeatureServiceInfo serviceInfo = await geodatabaseSyncTask.GetServiceInfoAsync(); var parameters = new GenerateGeodatabaseParameters(layerNumList, geometry) { GeodatabasePrefixName = gdbNameNoExt, OutSpatialReference = SpatialReferences.WebMercator, }; if (serviceInfo.SyncEnabled) { parameters.SyncModel = serviceInfo.SyncCapabilities.SupportsPerLayerSync ? SyncModel.PerLayer : SyncModel.PerGeodatabase; } //call extension method GeodatabaseStatusInfo resultInfo = await geodatabaseSyncTask.ExGenerateGeodatabaseAsync(parameters, new TimeSpan(0, 0, 2), generationProgress); // Download geodatabase only if generation was completed without errors. Other statuses that might be checked and handled are // GeodatabaseSyncStatus.Failed and GeodatabaseSyncStatus.CompletedWithErrors. if (resultInfo.Status != GeodatabaseSyncStatus.Completed) { Logger.Report(string.Format("Geodatabase: Generating geodatabase failed. Status = {0}.", resultInfo.Status), prog); return; } //Download database ... with no buffer Logger.Report("Geodatabase: Replica created, starting download.", prog); var client = new ArcGISHttpClient(); HttpResponseMessage gdbStream = await client.GetAsync(resultInfo.ResultUri, HttpCompletionOption.ResponseHeadersRead); using (FileStream stream = File.Create(geodatabasePath + "\\" + gdbNameNoExt + gdbExt)) { await gdbStream.Content.CopyToAsync(stream); await stream.FlushAsync(); } DateTime end = DateTime.UtcNow; Logger.Report("Measured time: " + (end - begin).TotalMilliseconds + " ms.", prog); } catch (Exception ex) { Debug.WriteLine(ex.Message); Debug.WriteLine(ex.ToString()); Console.WriteLine("CreateReplica Exception" + Environment.NewLine + ex.Message); } }