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;
                });
            }
Exemple #2
0
            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;
                });
            }