powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# async... await
25 сообщений из 317, страница 9 из 13
C# async... await
    #39574189
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregВМоисеевПочему проходит это:
Код: c#
1.
await Task.Run(() => wsp.Entity_SP("NCUYAO_GIS.Puski_Sql", wsp.sp_Sel, asp, RowToEntity)); 



и не проходит это:
Код: c#
1.
try { await wsp.Entity_SP(ИмяХП, sp, asp, RowToEntity); }


В точке await поток должен для явной асинхронности разделиться на два потока. Видимо, метод wsp.Entity_SP не является асинхронным, т.к. внутри нет вилки на два потока. И вилку приходится делать при помощи Task.Run()

ЗЫ. В частном случае, метод может, решать, быть ему асинхронным, или не быть. Если метод решит, что операция не займет много времени, метод может не разделять потоки и выполняться в синхронном режиме.Асинхронный не значит многопоточный.

Для явной асинхронности достаточно не ждать ответа от БД, а не делиться на два потока.
...
Рейтинг: 0 / 0
C# async... await
    #39574203
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 08:59 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21054252] [21054252]
>Асинхронный не значит многопоточный.
Главным преимуществом await перед task.wait, по мнению разработчиков, является то, что в случае await оконная функция должна продолжать обработку очереди сообщений
...
Рейтинг: 0 / 0
C# async... await
    #39574212
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТак всё верно, continuation выполняется на любом первом свободном потоке без восстановления контекста синхронизации, именно благодаря этому не будет дедлоков, если кто-то сделал где-то WaitСогласен, насчет дедлоков. Но я не об этом. Если не конфигурировать поток, и вызвать код из UI, то UI будет постоянно задействоваться, что приводит к торможению UI, вплоть до полного зависания.

hVosttвнутри внешних методов топикастера UI поток не нужен, и да, ConfigureAwait(false) надо делать всегда и везде, кроме основного потока исполнения. неудобный синтаксис, лучше бы атрибут сделали или freeasync какой-нибудь ))Надо было сделать по умолчанию false. Было бы более логично...
...
Рейтинг: 0 / 0
C# async... await
    #39574217
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАсинхронный не значит многопоточный.
Для явной асинхронности достаточно не ждать ответа от БД, а не делиться на два потока.Да асинхронный, не значит многопоточный. Но это не значит, что можно обойтись одним потоком для явной асинхронности.
...
Рейтинг: 0 / 0
C# async... await
    #39574218
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregskyANAАсинхронный не значит многопоточный.
Для явной асинхронности достаточно не ждать ответа от БД, а не делиться на два потока.Да асинхронный, не значит многопоточный. Но это не значит, что можно обойтись одним потоком для явной асинхронности.Да нет. Можно.

К примеру Node.js однопоточный и явно асинхронный
...
Рейтинг: 0 / 0
C# async... await
    #39574223
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregЕсли не конфигурировать поток, и вызвать код из UI,
Что значит из ГУИ? Технически это основной поток приложения.
Мы же не про серверный процесс в трехзвенке тут обсуждам.
Т.е. в контексте топика у меня или у ТС торможение?
Не верю).
...
Рейтинг: 0 / 0
C# async... await
    #39574224
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANArefregпропущено...
Да асинхронный, не значит многопоточный. Но это не значит, что можно обойтись одним потоком для явной асинхронности.Да нет. Можно.

К примеру Node.js однопоточный и явно асинхронный Мы говорим про С#, и сахар await
...
Рейтинг: 0 / 0
C# async... await
    #39574225
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 08:59 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21054252] [21054252]
>Асинхронный не значит многопоточный.
Главным преимуществом await перед task.wait, по мнению разработчиков, является то, что в случае await оконная функция должна продолжать обработку очереди сообщенийУ Вас проблема в Вашем собственном коде.

Мы Вам предлагали его переписать? Предлагали следовать принципам проектирования? Предлагали.
Но Вы пошли по пути "я не следую догмам", вот теперь и обретаетогребаете.
...
Рейтинг: 0 / 0
C# async... await
    #39574226
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 08:59 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21054252] [21054252]
>Асинхронный не значит многопоточный.
Главным преимуществом await перед task.wait, по мнению разработчиков, является то, что в случае await оконная функция должна продолжать обработку очереди сообщений
Да. Просто запомни что wait устарел.
...
Рейтинг: 0 / 0
C# async... await
    #39574230
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregskyANAпропущено...
Да нет. Можно.

К примеру Node.js однопоточный и явно асинхронный Мы говорим про С#, и сахар awaitЕсли честно, то я вообще не понимаю о чём вы тут говорите.
Мне кажется, что в ветке просто флуд.
...
Рейтинг: 0 / 0
C# async... await
    #39574240
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregskyANAпропущено...
Да нет. Можно.

К примеру Node.js однопоточный и явно асинхронный Мы говорим про С#, и сахар await
Да. Про мейнстрим и сахар))))))))
...
Рейтинг: 0 / 0
C# async... await
    #39574244
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 09:39 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21054353] [21054353]
>У Вас проблема в Вашем собственном коде.
Чушь.
Надо же быть такими упертыми, почему же до Вас не дойдет, что то что Вы предлагали и предлагаете, по Вашим же понятиям, в моей ситуации - говнокод. Ведь ткнул же носом.
Он не работает. Ваше предложение отправил на помойку - мой вариант, await Task.Run, работает.
...
Рейтинг: 0 / 0
C# async... await
    #39574248
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 09:39 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21054353] [21054353]
>У Вас проблема в Вашем собственном коде.
Чушь.
Надо же быть такими упертыми, почему же до Вас не дойдет, что то что Вы предлагали и предлагаете, по Вашим же понятиям, в моей ситуации - говнокод. Ведь ткнул же носом.
Он не работает. Ваше предложение отправил на помойку - мой вариант, await Task.Run, работает.Успокойтесь. Я в этом топике ничего ещё не предлагал.
И не собираюсь. Разбираетесь сами с тем, что нагородили
...
Рейтинг: 0 / 0
C# async... await
    #39574271
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregЕсли не конфигурировать поток, и вызвать код из UI, то UI будет постоянно задействоваться, что приводит к торможению UI, вплоть до полного зависания.

То, о чём ты говоришь, вообще не имеет отношения к асинхронности. Никакого от слова совсем. Если хочешь выполнять тяжёлую CPU Bound работу, не влияя на UI, ты должен запустить задачу background потоке руками. Асинк эту задачу не решает.


refregНадо было сделать по умолчанию false. Было бы более логично...

Ни в коем случае. Не логично ни разу :) false нужен только для писателей библиотек, а основная масса разрабов это прикладные разработчики.
...
Рейтинг: 0 / 0
C# async... await
    #39574294
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
+1
...
Рейтинг: 0 / 0
C# async... await
    #39574357
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 10:05 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21054408][21054408]

>...Я в этом топике ничего ещё не предлагал...
Прочтите внимательно и вдумчиво, что Вы написали здесь .
Понимаю, что Вы имели ввиду это .
Я честно и пунктуально переписал две системы в Вашем классическом варианте. Но что-то давило - решил проверить подсчет и вывод в ProgresBar время построения выборки при Вашем подходе - await без Task.Run. И вляпался. Долго рылся в инете и ничего не нашел. Вернулся к своему варианту - await Task.Run. Но какая-то недосказанность осталась, поэтому и обратился к коллегам с вопросом топика.

>... "я не следую догмам"...
Да это правда - я не раб лампы, - разрабатываю сам, и сам отвечаю за свою разработку. Если мне подходит догма - использую.
...
Рейтинг: 0 / 0
C# async... await
    #39574363
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевПонимаю, что Вы имели ввиду это .
Вы там не догадались, что код обсуждают в топике программистов.
Вы там смешали свой вопрос, строить ли веб и конкретный код на шарпе.
...
Рейтинг: 0 / 0
C# async... await
    #39574374
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тут вы мешаете чтение ридером и обратный вызов в кавычах.

Код: c#
1.
2.
3.
using (reader = (OracleDataReader)await command.ExecuteReaderAsync()) {
          //-- Формируем коллекцию из выборки
          sp(RowToEntity); //-- Обратный вызов}


Осторожнее с обратным вызовом между потоками.
...
Рейтинг: 0 / 0
C# async... await
    #39574385
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
sql_sel varchar2(2000) := '
  SELECT pk_Strana_Puska,nv,Strana_Puska,sk
  FROM tbl_Strani_Puskov
  WHERE (pk_Strana_Puska<>0)';
  sel1 varchar2(50) := ' AND Strana_Puska LIKE' || '''' || x_Strana_Puska || '''';

 begin
  if(x_Strana_Puska is not null) then
   sql_sel := sql_sel || sel1;
  end if;


Так же пол года назад там говорилось, что вместо приклеивания where условий,
Пишут and (param is null)....
...
Рейтинг: 0 / 0
C# async... await
    #39574429
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, сегодня, 12:36 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1280515&msg=21054899][21054899]

>...Осторожнее с обратным вызовом между потоками
Да не делаю этого
...
Рейтинг: 0 / 0
C# async... await
    #39574435
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТо, о чём ты говоришь, вообще не имеет отношения к асинхронности. Никакого от слова совсем.
А ты упорно какую то книгу пересказываешь о "асинхронном вводе-выводе"

На код "асинхронности" sqlreadera

Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
        private SqlDataReader RunExecuteReaderTds( CommandBehavior cmdBehavior, RunBehavior runBehavior, bool returnStream, bool async, int timeout, out Task task, bool asyncWrite, bool inRetry, SqlDataReader ds=null, bool describeParameterEncryptionRequest = false) {

            Debug.Assert(!asyncWrite || async, "AsyncWrite should be always accompanied by Async");



            if (ds == null && returnStream) {

                ds = new SqlDataReader(this, cmdBehavior);

            }



            Task reconnectTask = _activeConnection.ValidateAndReconnect(null, timeout);



            if (reconnectTask != null) {

                long reconnectionStart = ADP.TimerCurrent();

                if (async) {                    

                    TaskCompletionSource<object> completion = new TaskCompletionSource<object>();

                    _activeConnection.RegisterWaitingForReconnect(completion.Task);

                    _reconnectionCompletionSource = completion;

                    CancellationTokenSource timeoutCTS = new CancellationTokenSource();

                    AsyncHelper.SetTimeoutException(completion, timeout, SQL.CR_ReconnectTimeout, timeoutCTS.Token);

                    AsyncHelper.ContinueTask(reconnectTask, completion,

                        () => {

                            if (completion.Task.IsCompleted) {

                                return;

                            }

                            Interlocked.CompareExchange(ref _reconnectionCompletionSource, null, completion);

                            timeoutCTS.Cancel();

                            Task subTask;                            

                            RunExecuteReaderTds(cmdBehavior, runBehavior, returnStream, async, TdsParserStaticMethods.GetRemainingTimeout(timeout, reconnectionStart), out subTask, asyncWrite, inRetry, ds);

                            if (subTask == null) {

                                completion.SetResult(null);

                            }

                            else {

                                AsyncHelper.ContinueTask(subTask, completion, () => completion.SetResult(null));

                            }

                        }, connectionToAbort: _activeConnection);

                    task = completion.Task;

                    return ds;

                }

                else {

                    AsyncHelper.WaitForCompletion(reconnectTask, timeout, () => { throw SQL.CR_ReconnectTimeout(); });

                    timeout = TdsParserStaticMethods.GetRemainingTimeout(timeout, reconnectionStart);

                }

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

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

ты увидел, как какие-то таски запускаются в бэкргаунде в твоём куске кода? :)

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


ты увидел, как какие-то таски запускаются в бэкргаунде в твоём куске кода? :)

В моем куске кода запускаются потоки и я их отслеживаю каждого и вижу что они делают.
В бакгроунде у меня запускается воркер (этого для UI достаточно), а он генерирует параллельные потоки загрузки данных.
Они между прочим тоже из пула, потому по умолчанию бакгроунд.
...
Рейтинг: 0 / 0
C# async... await
    #39574460
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,
А нафига нам тут портянки кода транспортного уровня?
...
Рейтинг: 0 / 0
25 сообщений из 317, страница 9 из 13
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# async... await
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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