public static async Task CapturedSignal() { SignalOutput SSO = new SignalOutput(); if (SSO.FindRedRat3() != null) { PublicData.write_info("Начат прием сигнала: ожидание 10с."); IRsignalTrainingMode IRSTM = new IRsignalTrainingMode(); var waitsignal = Ex.LongRun(() => IRSTM.CaptureSignal()); var form = new FormTimer("", "white", 10, "Подайте сигнал с пульта"); form.Show(); await waitsignal; Ex.Try(() => form.Close()); var signal = IRSTM.GetSignal(); if (signal == null) { PublicData.write_info("Сигнал не был получен. Прием окончен."); return; } var ir = SignalToString(signal); string nec = null; Ex.Try( () => nec = CodeTransform.SignalToNEC(signal) //, ex => PublicData.write_info(ex.Message) ); PublicData.write_info("Сигнал принят."); nec = (nec?.Length == 6 || nec?.Length == 8) ? nec : null; Ex.Try(() => Clipboard.SetText(nec ?? ir)); new FormTextLine(nec, ir).Show(); } else { MessageBox.Show("Нет подключенных устройств RedRat3. Подключите RedRat3 и попробуйте снова.", "Проверка подключения", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }