private async Task SaveImageAsync(Image image, Byte[] imageByte, String formatedSavePath = null) { if (IsInvalid) { return; } await WaitAsync(_token).ConfigureAwait(true); String formatedDirectoryPath = GetFormatedDirectoryPath(image); if (String.IsNullOrEmpty(formatedDirectoryPath)) { Log.Add(new LogMessage(Globals.Localization.FormatDirectoryError, MessageType.Warning, new[] { image.id.ToString() })); return; } if (!DirectoryUtils.TryCreateDirectory(formatedDirectoryPath, PathAction.None)) { Log.Add(new LogMessage($"{Globals.Localization.CreateDirectoryError}: {formatedDirectoryPath}", MessageType.CriticalWarning)); IsInvalid = true; return; } if (_token.IsCancellationRequested) { return; } try { if (String.IsNullOrEmpty(formatedSavePath)) { formatedSavePath = GetFormatedFilePath(image); if (String.IsNullOrEmpty(formatedSavePath)) { Log.Add(new LogMessage(Globals.Localization.FormatFileNameError, MessageType.Warning, new[] { image.id.ToString() })); return; } } await using FileStream sourceStream = new FileStream(formatedSavePath, FileMode.Create, FileAccess.Write, FileShare.None); await sourceStream.WriteAsync(imageByte, 0, imageByte.Length, _token).ConfigureAwait(true); ImageSaved?.Invoke(image); } catch (UnauthorizedAccessException) { Log.Add(new LogMessage(Globals.Localization.WriteAccessDeniedError, MessageType.Error)); IsInvalid = true; } catch (Exception e) { Log.Add(new LogMessage($"{image.name} error {e.Message}", MessageType.Error)); } }
public void OnImageSaved(ImageSavedEventArgs e) { ImageSaved?.Invoke(handler, e); }
private void OnImageSaved(object sender, ImageSavedEventArgs imageFoundEventArgs) { ImageSaved?.Invoke(this, imageFoundEventArgs); }
private async Task DownloadImageAsync(Image image) { try { if (IsInvalid || _token.IsCancellationRequested) { return; } await WaitAsync(_token).ConfigureAwait(true); String formatedSavePath = null; if (SaveToDisk) { formatedSavePath = GetFormatedFilePath(image); if (String.IsNullOrEmpty(formatedSavePath)) { Log.Add(new LogMessage(Globals.Localization.FormatFileNameError, MessageType.Warning, new[] { image.id.ToString() })); ImageDownloaded?.Invoke(image); ImageSaved?.Invoke(image); return; } if (File.Exists(formatedSavePath) && !Globals.ExistFileRewrite.GetValue()) { ImageDownloaded?.Invoke(image); ImageSaved?.Invoke(image); return; } } Byte[] imageByte = await GetImageAsync(image).ConfigureAwait(true); if (_token.IsCancellationRequested || imageByte == null) { return; } ImageDownloaded?.Invoke(image); if (SaveToDisk) { try { await SaveImageAsync(image, imageByte, formatedSavePath).ConfigureAwait(true); } catch (Exception e) { Log.Add(new LogMessage(e.Message, MessageType.CriticalWarning)); IsInvalid = true; MessageForm.GetDialogResultOnException(e, null, null, MessageBoxButtons.OK, new[] { Globals.Localization.Accept }); } } } catch (Exception e) { Log.Add(new LogMessage($"{e.Message}{LocalizationBase.NewLine}{e.StackTrace}", MessageType.CriticalWarning)); throw; } }