public void Start(string[] args) { var inputs = _context.Inputs.ToList(); var captures = new List <IRgbEasyCapture>(); var controlForm = _formService.CreateControlForm(); _captureSwitcher.Load(_settingsService.LoadCaptureParameters()); foreach (var input in inputs) { var capture = input.OpenCapture(); var form = _formService.CreateCaptureForm(controlForm, capture); captures.Add(capture); form.GotFocus += (sender, eventArgs) => controlForm.Subject = capture; form.Visible = true; capture.ModeChanged += (sender, eventArgs) => controlForm.Update(); } controlForm.SaveClicked += (sender, e) => { var c = (IRgbEasyCapture)controlForm.Subject; var captureForm = _formService.GetCaptureFormForInput(c.Input); var mode = c.ModeInfo; if (mode.State == CAPTURESTATE.CAPTURING) { _captureSwitcher.Set(new CaptureParameters { Lines = mode.TotalLines, HRate = mode.RefreshRate, VRate = mode.LineRate, Height = c.CaptureHeight, Width = c.CaptureWidth, HPos = c.HorizontalPosition, HScale = c.HorizontalScale, VPos = c.VerticalPosition, Phase = c.Phase, Scale = captureForm.Scale, Brightness = c.Brightness, Contrast = c.Contrast }); _settingsService.SaveCaptureParameters(_captureSwitcher.Save()); } }; try { Application.Run(controlForm.Form); } finally { foreach (var capture in captures) { capture?.Dispose(); } } }