Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269

Дождаться сигнала из библиотеки

24.07.2019, 15:12. Показов 798. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня проблема) Советуюсь как решить.
В wpf есть библиотека, которая дожидается ответа от ком порта, некоторые команды в библиотеке могут дожидаться несколько секунд, библиотека отлажена, правильно работает.
В приложении эти команды вызываются в отдельных задачах. И получается что приложение работает быстрее, чем приходит ответ из библиотеки.
Помню что есть такая возможность, что можно поставить сигнал в библиотеке и как она пошлёт его приложению, продолжать работу. Что-то типа ManualResetEvent.
Подскажите что можно с этим сделать?

(Опечатка в наименовании темы)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.07.2019, 15:12
Ответы с готовыми решениями:

Дождаться эмитирования сигнала
Есть объект класса QWebView, вызывается метод load. Нужно выполнять дальше код не асинхронно. Нашел два решения для этого: 1)...

Извлечение сигнала заданной частоты из более сложного сигнала
Нужен совет. Предположим, у меня есть некий сложный сигнал. Я знаю, что в него входит синусоида, которая сохраняет свою амплитуду, затем...

Извлечение сигнала заданной частоты из более сложного сигнала
Нужен совет. Предположим, у меня есть некий сложный сигнал. Я знаю, что в него входит синусоида, которая сохраняет свою амплитуду, затем...

10
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
25.07.2019, 10:26  [ТС]
Апну, актуально
0
 Аватар для Immo
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,741
25.07.2019, 10:32
что то типо этого хотите?
C#
1
2
3
4
5
6
7
8
9
public void DoSomeThing(Action<string> callback)
    {
        callback("text");
    }
 
    public void Test()
    {
        DoSomeThing((result) => Console.WriteLine(result));
    }
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
25.07.2019, 11:01  [ТС]
Immo, представим что в библиотеке есть метод который получает ответ от ком порта и разбирает его и возвращает приложению...
C#
1
2
3
4
5
6
7
8
9
 public override StatusCode R()
        {
            return SendCommand(Command.R_E);
        }
private StatusCode SendCommand(Command command)
        {
//..........
            var allStat = Task.Factory.StartNew(() => InnerSendCommand(command));
//...
в приложении есть стартовое окно, при клике по кнопке переходит в другое окно, я получаю ответ позже от ком порта, и получается, что кликаю по кнопке , не дожидаясь ответа из библиотеки и перехожу в след окно. Как сделать задержку (кроме слипа), дождаться ответа и продолжить работу, можно конечно разбирать ответ чтобы продолжить, но там всегда что-то будет храниться, можно попробовать конечно...или есть ещё какие-то фичи?
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
25.07.2019, 13:02
Цитата Сообщение от ShmelVG Посмотреть сообщение
Как сделать задержку (кроме слипа)
await Task.Delay?
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
25.07.2019, 13:30
C#
1
2
3
4
5
6
7
8
9
 public override Task<StatusCode> R()
        {
            return SendCommand(Command.R_E);
        }
private async Task<StatusCode> SendCommand(Command command)
        {
//..........
            var allStat = await InnerSendCommand(command);
//...
InnerSendCommand тоже перепишите под асинхронную модель.

Ну и при клике по кнопке:
C#
1
2
3
4
5
6
7
8
9
10
11
async void ButtonClick(object sender, EventArgs e)
{
   var button = sender as Button;
   button.IsEnabled = false;
 
   StatusCode response
   try { response = await liba.R(); }
   finally { button.IsEnabled = true; }
 
   OpenWindow(response);
}
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
25.07.2019, 17:06  [ТС]
Рядовой, совсем забыл) Хотя это и не выход конечно) (Спасибо)
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
25.07.2019, 19:23
ShmelVG, Вот Вам еще вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
               // Какая то длительная задача
                Task.Run(() =>
                {
                    Task.Delay(5000).GetAwaiter().GetResult(); // Имитируем длительную задачу
                }).ContinueWith(Callback);
 
        // Метод выполнится после завершения основной задачи
        private void Callback(Task task)
        {
            MessageBox.Show("Задача завершена");
        }
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
25.07.2019, 20:58
Цитата Сообщение от asn31337 Посмотреть сообщение
C#
1
2
3
4
Task.Run(() =>
{
   Task.Delay(5000).GetAwaiter().GetResult(); // Имитируем длительную задачу
}).ContinueWith(Callback);
Странная конструкция.
Почему не так?
C#
1
Task.Delay(5000).ContinueWith(Callback);
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
25.07.2019, 21:41
Цитата Сообщение от kolorotur Посмотреть сообщение
Почему не так?
Ну это типа для имитации длительной задачи. По идее то там какой то код должен быть... Если бы целью задачи было простое ожидание, то, конечно же, можно было бы и так сделать.
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
25.07.2019, 21:46  [ТС]
asn31337, kolorotur, спасибо, утром отпишусь, попробую)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.07.2019, 21:46
Помогаю со студенческими работами здесь

Моделирование сигнала, шумового процесса, смеси сигнала с шумом
Доброе время суток. Помогите пожалуйста решить данное задание в MatLab. На двух вложениях одно задание.

Задан вид периодического сигнала и его числовые характеристики. Для данного сигнала необходимо сделать
Задан вид периодического сигнала и его числовые характеристики. Для данного сигнала необходимо: 1) начертить осциллограмму; 2)...

Открыть файл формата WAV, воспроизвести его и отобразить график амплитуды и времени этого сигнала (файла), а также спектр сигнала
Здравствуйте ! Помогите пожалуйста с программой на Delphi 7. Не могу написать программу которая по нажатию вкладки ОТКРЫТЬ в меню...

Дождаться события
Как в делфи дождаться события, т.е. не продолжать выполнения пока не выполнится события в event?

не дождаться ответа
Уважаемые участники форума. я впервые сталкиваюсь с программой ТП и прошу помочь мне. Я приобрел книгу о программировании и решил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru