powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# async... await
25 сообщений из 317, страница 5 из 13
C# async... await
    #39573143
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

да при чем тут блокировки?
блокировка - это когда ресурс не разделяем, мощность занята одномоментно (независимо от степени загрузки)
ладно, надоело ругаться, сил уже нет
...
Рейтинг: 0 / 0
C# async... await
    #39573144
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRosсинхронизировать (распараллелить по возможности в заданном отрезке времени) заполнение вьюмодели и генерации вью для вьюмодели
интерпретация и запись промежуточных результатов и параллельный расчет расписания

при чём тут асинхронность? в том, что ты не хочешь свой UI блокировать?

не блокировать UI можно в редких случаях - когда все реентерабельно
а асинхронность при том что почему то синхронизация процессов делается через так называемые асинхронные методы
...
Рейтинг: 0 / 0
C# async... await
    #39573146
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

запуская отдельный потом, не всегда нужна асинхронность, ожидать завершение операции работающей в отдельном потоке далеко не всегда имеет смысл
...
Рейтинг: 0 / 0
C# async... await
    #39573151
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosда при чем тут блокировки?

если блокировки не при чём, как и кого ты хочешь синхронизировать? с помощью такой-то матери?
...
Рейтинг: 0 / 0
C# async... await
    #39573155
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosа асинхронность при том что почему то синхронизация процессов делается через так называемые асинхронные методы

у меня такое ощущение, что у тебя понятийный оппорат совершенно отличается от общепринятых. асинхронное выполенние отличается от синхронного отсутствием блокирования потока исполнения. точка. мозги не калупай, или объясни своё понимание «асинхронности» и мы подберём ему аналог из общепринятых человеческих понятий.
...
Рейтинг: 0 / 0
C# async... await
    #39573156
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesзапуская отдельный потом, не всегда нужна асинхронность, ожидать завершение операции работающей в отдельном потоке далеко не всегда имеет смысл

любое ожидание чего угодно является блокировкой, следовательно это синхронное выполнение.

банальный Wait на таске блокирует поток, значит ни о какой асинхронности говорить не приходится.
...
Рейтинг: 0 / 0
C# async... await
    #39573158
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesожидать завершение операции работающей в отдельном потоке

вот две операции:

a = 1 + 2
b = a + 3

вторая операция ожидает, пока не выполнится первая. это нужно, потому что нам требуется результат. если бы результат был бы не нужен, вторую операцию можно было бы исполнять не ожидая первой.
...
Рейтинг: 0 / 0
C# async... await
    #39573185
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, вчера, 21:53 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21050190][21050190]
>... он тупо не понимает что и зачем делает...
Вы батенька явно что-то не то съели - задача то проста - показать в динамике время получения выборки - запускаю таймер и показываю его счетчик секунд в ПрогрессБаре
...
Рейтинг: 0 / 0
C# async... await
    #39573214
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>hVostt, вчера, 21:53 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21050190][21050190]
>... он тупо не понимает что и зачем делает...
Вы батенька явно что-то не то съели - задача то проста - показать ву динамике время получения выборки - запускаю таймер и показываю его счетчик секунд в ПрогрессБаре
))))
Вы бы хоть мемберов тут пожалели. Некоторые тут с пеной требовали синхронизации потоков с результатами от хранимки.
2. ПрогрессБар это полоска а ля position min\max а не таймер.
Кто тебе клаву дал, раз молчишь как партизан?
В прошлой теме у тебя было 120 страниц. В этой, ерунду обсуждаем кучу времени.
...
Рейтинг: 0 / 0
C# async... await
    #39573217
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>hVostt, вчера, 21:53 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21050190][21050190]
>... он тупо не понимает что и зачем делает...
Вы батенька явно что-то не то съели - задача то проста - показать в динамике время получения выборки - запускаю таймер и показываю его счетчик секунд в ПрогрессБаре

мне нечего добавить к тому, что я уже сказал
...
Рейтинг: 0 / 0
C# async... await
    #39573219
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro1232. ПрогрессБар это полоска а ля position min\max а не таймер.

да бесполезно объяснять очевидное, это паталогия
...
Рейтинг: 0 / 0
C# async... await
    #39573428
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, сегодня, 07:29 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21050662] [21050662]

>hVostt , сегодня, 07:34 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21050668] [21050668]


Мужики, выключайте идиотов и включайте извилины -немедленно-, а то если долго претворяться, можно и преобразоваться.
А пока не включили извилины, повторяю:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
      . . .
      dpt = new DispatcherTimer();
      dpt.Tick += new EventHandler(dpt_Tick);
      dpt.Interval = new TimeSpan(0, 0, 1);
      pgbWin.Minimum = 1;
      pgbWin.Maximum = гп.tm_Запрос;
     . . .

    public void tmrStart() {
      iPgbFrm = 0;
      pgbWin.Value = 0;
      dpt.Start();
    }
    
    public void tmrStop() { dpt.Stop(); pgbWin.Visibility = Visibility.Hidden; }

    //-- Показ ожидания в ProgressBar-е
    private void dpt_Tick(object sender, EventArgs e) {
      iPgbFrm++;
      if (iPgbFrm < 2) return; //-- Ожидание менее 3 секунд ещё комфортно
      if (iPgbFrm == 2) { //-- С 3-ей секунды ожидания покажем ProgressBar
        pgbWin.Visibility = Visibility.Visible;
        pgbWin.Value = iPgbFrm;
        return;
      }
      pgbWin.Value = iPgbFrm % гп.tm_Запрос + 1;
    }

    . . .


Почему проходит это:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
      . . .
      при.tmrStart();
      await Task.Run(() => wsp.Entity_SP("NCUYAO_GIS.Puski_Sql", wsp.sp_Sel, asp, RowToEntity));
      if(wsp.wspErr != null) {
        при.tmrStop();
        MessageBox.Show(wsp.wspErr, caption_Entity, MessageBoxButton.OK);
        bl_Разрешение = true;     //-- Разрешение выполнения функционала компонент
        return;
      }
      //-- Покажем выборку
      при.tmrStop();
      . . .

и не проходит это:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
      . . .
      при.tmrStart(); //-- Пуск таймера 
      try { await wsp.Entity_SP(ИмяХП, sp, asp, RowToEntity); }
      catch (System.InvalidOperationException ex) { throw new Exception(ex.Message); }
      catch (Exception ex) {
        при.tmrStop();
        MessageBox.Show(ex.Message, caption_Entity, MessageBoxButton.OK);
        bl_Разрешение = true;     //-- Разрешение выполнения функционала компонент
        return;
      }
      при.tmrStop();  //-- Останов таймера
      . . .


я не знаю.
Может быть ошибка разработчика, а может быть надо так:

Код: c#
1.
2.
3.
4.
5.
   var xTask= wsp.Entity_SP(ИмяХП, sp, asp, RowToEntity); 
   . . .
   здесь может быть надо что-то подкрутить в консерватории (Task), но что, не знаю
   . . . 
   await xTask
...
Рейтинг: 0 / 0
C# async... await
    #39573437
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеева может быть надо так:

Код: c#
1.
2.
3.
4.
5.
   var xTask= wsp.Entity_SP(ИмяХП, sp, asp, RowToEntity); 
   . . .
   здесь может быть надо что-то подкрутить в консерватории (Task), но что, не знаю
   . . . 
   await xTask


я же тебе показал, что тут надо подкрутить TCompletetionSource
...
Рейтинг: 0 / 0
C# async... await
    #39573444
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так, когда у тебя работает - она работает за счет того, что твой метод запущен в другом потоке, а таймер работает в основном потоке.
а когда не работает, потому что твой метод работает в основном потоке (так как await выкидывается) и таймер не может работать.
...
Рейтинг: 0 / 0
C# async... await
    #39573455
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ViPRos, 19 дек 17, 23:58 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21047273] [21047273]

Я подобный код у себя преобразовал примерно так:
wk.DoWork сделал async DoWork

wk.RunWorkerCompleted сделал основной веткой программы и в начало её тела включил -await DoWork-

функционал wk.ProgressChanged включил в async DoWork, благо DoWork выполняется в UI потоке

и это мне понравилось
...
Рейтинг: 0 / 0
C# async... await
    #39573456
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

я про этот код

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public static Task RunAsync(Action action) 
{ 
    var tcs = new TaskCompletionSource<Object>(); 
    ThreadPool.QueueUserWorkItem(_ => 
    { 
        try 
        { 
            action(); 
            tcs.SetResult(null); 
        } 
        catch(Exception exc) { tcs.SetException(exc); } 
    }); 
    return tcs.Task; 
}
...
Рейтинг: 0 / 0
C# async... await
    #39573457
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

ну для твоих целей бгворкер лучше, так как там есть прогресс (синхронизация потоков возможно встроенными возможностями) и думать не надо ни о чем
и можно показать нормальный прогресс, допустим по числу прочитанных записей, числу резалтьсетов и т.д., а не крутить фигню нескончаемую.
...
Рейтинг: 0 / 0
C# async... await
    #39573459
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosВМоисеев,

я про этот код

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public static Task RunAsync(Action action) 
{ 
    var tcs = new TaskCompletionSource<Object>(); 
    ThreadPool.QueueUserWorkItem(_ => 
    { 
        try 
        { 
            action(); 
            tcs.SetResult(null); 
        } 
        catch(Exception exc) { tcs.SetException(exc); } 
    }); 
    return tcs.Task; 
}

Ну это аналог Task.Run . Зачем такое писать самому?
...
Рейтинг: 0 / 0
C# async... await
    #39573462
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевМужики
2 вопроса:
- ты можешь на каждый пост отвечать и отвечать быстро? Хотя бы в пределах часа?
- ты хочешь работать с современным net 4.5, .....6?
...
Рейтинг: 0 / 0
C# async... await
    #39573467
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КViPRosВМоисеев,

я про этот код

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public static Task RunAsync(Action action) 
{ 
    var tcs = new TaskCompletionSource<Object>(); 
    ThreadPool.QueueUserWorkItem(_ => 
    { 
        try 
        { 
            action(); 
            tcs.SetResult(null); 
        } 
        catch(Exception exc) { tcs.SetException(exc); } 
    }); 
    return tcs.Task; 
}

Ну это аналог Task.Run . Зачем такое писать самому?

ну он хочет await мойМетод
...
Рейтинг: 0 / 0
C# async... await
    #39573470
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosАлексей Кпропущено...
Ну это аналог Task.Run . Зачем такое писать самому?

ну он хочет await мойМетодНу я понял.
...
Рейтинг: 0 / 0
C# async... await
    #39573472
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КViPRosпропущено...


ну он хочет await мойМетодНу я понял.
он же всю ветку только из за этого завел
...
Рейтинг: 0 / 0
C# async... await
    #39573475
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ViPRos, сегодня, 12:23 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21051324][21051324]
>...а когда не работает...
На мой взгляд, дело тоньше (могу ошибаться):
Когда оконная функция приложения получает свой квант в UI потоке, она начинает обработку своей очереди сообщений и думаю, что оконной функции глубоко наплевать, кто положил сообщение в очередь. Важно, что она обязана как-то обработать сообщение: может быть просто отбросить, а может и вызвать ветку обработчика сообщения, что и делает в моём случае await TaskRun - не запрещает обработку от таймера.
Почему этого нет в другом случае - вопрос, по моей логике это ошибка разработчика
...
Рейтинг: 0 / 0
C# async... await
    #39573476
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosАлексей Кпропущено...
Ну я понял.
он же всю ветку только из за этого завелЯ понял. Просто есть родной метод Task.Run . Что мешает использовать его для осуществления мечты топикстартера?
...
Рейтинг: 0 / 0
C# async... await
    #39573479
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>ViPRos, сегодня, 12:23 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21051324][21051324]
>...а когда не работает...
На мой взгляд, дело тоньше (могу ошибаться):
Когда оконная функция приложения получает свой квант в UI потоке, она начинает обработку своей очереди сообщений и думаю, что оконной функции глубоко наплевать, кто положил сообщение в очередь. Важно, что она обязана как-то обработать сообщение: может быть просто отбросить, а может и вызвать ветку обработчика сообщения, что и делает в моём случае await TaskRun - не запрещает обработку от таймера.
Почему этого нет в другом случае - вопрос, по моей логике это ошибка разработчика
блин просто у тебя нет в методе DoEvents() где-нить, а так и таймер бы работал всегда
...
Рейтинг: 0 / 0
25 сообщений из 317, страница 5 из 13
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# async... await
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]