public static async Task <TrainingModels::Export> ExportIteration( this ICustomVisionTrainingClient trainingApi, Guid projectId, Guid iterationId, string flavor = "onnx12", int timeoutInSecond = 30) { TimeSpan timeout = TimeSpan.FromSeconds(timeoutInSecond); TrainingModels::Export exportIteration = null; try { exportIteration = exportIteration = string.IsNullOrEmpty(flavor) ? await trainingApi.ExportIterationAsync(projectId, iterationId, platform) : await trainingApi.ExportIterationAsync(projectId, iterationId, platform, flavor); } catch (HttpOperationException ex) { string exceptionContent = ex?.Response?.Content ?? string.Empty; if (!exceptionContent.Contains("BadRequestExportAlreadyInProgress")) { throw ex; } } DateTime startTime = DateTime.Now; while (true) { IList <TrainingModels::Export> exports = await trainingApi.GetExportsAsync(projectId, iterationId); exportIteration = string.IsNullOrEmpty(flavor) ? exports?.FirstOrDefault(x => string.Equals(x.Platform, platform, StringComparison.OrdinalIgnoreCase)) : exports?.FirstOrDefault(x => string.Equals(x.Platform, platform, StringComparison.OrdinalIgnoreCase) && string.Equals(x.Flavor, flavor, StringComparison.OrdinalIgnoreCase)); if (exportIteration?.Status == "Exporting") { await Task.Delay(1000); } else { break; } if (DateTime.Now - startTime > timeout) { throw new TimeoutException("The operation couldn't be completed due to a timeout."); } } return(exportIteration); }
public static async Task <TrainingModels::Export> ExportIteration(this ICustomVisionTrainingClient trainingApi, Guid projectId, Guid iterationId, int timeoutInSecond = 30) { TimeSpan timeout = TimeSpan.FromSeconds(timeoutInSecond); TrainingModels::Export exportIteration = null; try { exportIteration = await trainingApi.ExportIterationAsync(projectId, iterationId, platform); } catch (TrainingModels::CustomVisionErrorException ex) { if (ex.Body.Code != TrainingModels::CustomVisionErrorCodes.BadRequestExportAlreadyInProgress) { throw ex; } } DateTime startTime = DateTime.Now; while (true) { IList <TrainingModels::Export> exports = await trainingApi.GetExportsAsync(projectId, iterationId); exportIteration = exports?.FirstOrDefault(x => string.Equals(x.Platform, platform, StringComparison.OrdinalIgnoreCase)); if (exportIteration?.Status == "Exporting") { await Task.Delay(1000); } else { break; } if (DateTime.Now - startTime > timeout) { throw new TimeoutException("The operation couldn't be completed due to a timeout."); } } return(exportIteration); }