public async void Stop(DialogViewModel viewModel, bool cancel) { Logger.Debug(Target.Recording, "Stop invoked, cancel: " + cancel); await _recordQueue.Enqueue(async() => { Logger.Debug(Target.Recording, "Enqueued stop invoked"); var recorder = _recorder; var file = _file; var mode = _mode; if (recorder == null || file == null) { Logger.Debug(Target.Recording, "recorder or file == null, abort"); return; } RecordingStopped?.Invoke(this, EventArgs.Empty); var now = DateTime.Now; var elapsed = now - _start; Logger.Debug(Target.Recording, "stopping recorder, elapsed " + elapsed); await recorder.StopAsync(); Logger.Debug(Target.Recording, "recorder stopped"); if (cancel || elapsed.TotalMilliseconds < 700) { try { await file.DeleteAsync(); } catch { } Logger.Debug(Target.Recording, "recording canceled or too short, abort"); if (elapsed.TotalMilliseconds < 700) { RecordingTooShort?.Invoke(this, EventArgs.Empty); } } else { Logger.Debug(Target.Recording, "sending recorded file"); Send(viewModel, mode, file, recorder._mirroringPreview, (int)elapsed.TotalSeconds); } _recorder = null; _file = null; }); }
public async void Stop(bool cancel) { await _recordQueue.Enqueue(async() => { var recorder = _recorder; var file = _file; if (recorder == null || file == null) { return; } RecordingStopped?.Invoke(this, EventArgs.Empty); var now = DateTime.Now; var elapsed = now - _start; await recorder.StopAsync(); if (cancel || elapsed.TotalMilliseconds < 700) { try { await file.DeleteAsync(); } catch { } if (elapsed.TotalMilliseconds < 700) { RecordingTooShort?.Invoke(this, EventArgs.Empty); } } else { Send(file); } _recorder = null; _file = null; }); }