powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Зачем нужен await?
25 сообщений из 252, страница 2 из 11
Зачем нужен await?
    #39682078
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)не выдумывайте, там обычный линейный код

Да, там код. Это правда

kealon(Ruslan)ожидание выполняет реализатор контракта IAsync<T>
в частности с IO, для этого достаточно текущую нить отдать "планировщику" и переключиться на выполнение другой задачи.

Вы не хотите разбираться как работает паттерн async/await, вообразили себе как он работает примитивным образом, окей. Спорить не буду, топик не об этом.

Мне-то что хотите доказать? Я вопрос и проблемы в начале топика озвучил. Они не критичные, но с ними пришлось столкнуться.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682080
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BДля меня как раз наоборот - первый случай абсолютно очевиден, а второй - наоборот.
Не понятно, что должна сделать эта процедура выполняя первый и второй оператор.
И в каком потоке.

Код: c#
1.
2.
3.
4.
5.
6.
7.
private async void Button1Click(object sender, EventArgs e)
{
    // а такое очевидно
    // и это асинхронный вызов!
    label1.Text = "Please wait";   
    label1.Text = GetExpensiveStringAsync();
}



Это потому что вам это ещё пока не привычно.

Посмотрите, что случилось, когда в Java ввели var , сколько воя и боли.
Очевидно, что это упрощает написание и облегчает код, но некоторые сразу сказали, что им непонятно теперь какого типа переменные, var всё портит

Здесь ситуация такая же. Мне достаточно, если асинхронные методы будут иметь суффикс Async, ну и IDE мог бы с лёгкостью подсвечивать асинхронные вызовы.

Просто этого нет пока, надо вручную писать много await и это печалит.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682099
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМне-то что хотите доказать? Я вопрос и проблемы в начале топика озвучил. Они не критичные, но с ними пришлось столкнуться.вы совершенно не понимаете как это работает, хуже того - вы себе что-то насочиняли

исходя из второго у вас и весь вопрос

на дуболомный вопрос MasterZiv-а у вас нет ответа

а конкретно если у вас везде await, то что-то с вашим кодом не так

по вашему
Код: c#
1.
2.
AsyncMet1();
AsyncMet2();



должен преобразоваться в
Код: c#
1.
2.
await AsyncMet1();
await AsyncMet2();


ну-ну...
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682103
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)по вашему
Код: c#
1.
2.
AsyncMet1();
AsyncMet2();



должен преобразоваться в
Код: c#
1.
2.
await AsyncMet1();
await AsyncMet2();


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

че то ты где то не понял :(
async await {censored} не нужны
Модератор: Просьба подбирать слова покультурнее
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682111
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 15:11 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1300144&msg=21621456] [21621456]

>... Мне достаточно, если асинхронные методы будут иметь суффикс Async, ну и IDE мог бы с лёгкостью подсвечивать асинхронные вызовы.

<На первый взгляд неплохо - меньше писанины. Но мне приходится писать и так:
Код: c#
1.
2.
3.
4.
5.
private async void ЗапросДанных() {
 . . .
 await Task.Run(() => wsp.Entity_SP("...
 . . .
}
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682112
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 15:11 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1300144&msg=21621456] [21621456]

>... Мне достаточно, если асинхронные методы будут иметь суффикс Async, ну и IDE мог бы с лёгкостью подсвечивать асинхронные вызовы.

<На первый взгляд неплохо - меньше писанины. Но мне приходится писать и так:
Код: c#
1.
2.
3.
4.
5.
private async void ЗапросДанных() {
 . . .
 await Task.Run(() => wsp.Entity_SP("...
 . . .
}
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682114
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)на дуболомный вопрос MasterZiv-а у вас нет ответа

Если вы не разбираетесь в вопросе вместе с MasterZiv, в этом ничего плохого нет, не нужно вступать в полемику.


kealon(Ruslan)а конкретно если у вас везде await, то что-то с вашим кодом не так

по вашему
Код: c#
1.
2.
AsyncMet1();
AsyncMet2();




должен преобразоваться в
Код: c#
1.
2.
await AsyncMet1();
await AsyncMet2();



Мда.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682116
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

че то ты где то не понял :(
async await {censored} не нужны

В контексте твоих проектов, не особо нужны.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682118
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев<На первый взгляд неплохо - меньше писанины. Но мне приходится писать и так:
Код: c#
1.
2.
3.
4.
5.
private async void ЗапросДанных() {
 . . .
 await Task.Run(() => wsp.Entity_SP("...
 . . .
}



Но это не асинхронный вызов. Это асинхронное ожидание, в этом случае блокируется отдельно выделенный поток для абсолютно синхронного выполнения i/o операции.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682129
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев<На первый взгляд неплохо - меньше писанины. Но мне приходится писать и так:
Код: c#
1.
2.
3.
4.
5.
private async void ЗапросДанных() {
 . . .
 await Task.Run(() => wsp.Entity_SP("...
 . . .
}


Компилятор мог бы для всех task-ов "докинуть" await, это не проблема... Проблема, если разработчику понадобиться более гибкая схема, например
async ... Method()
{
task1.Start();
task2.Start();
await task1;
}
и где-то в другом месте
task2.Wait();
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682132
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRЕсли эти вызовы производятся из async-метода, то да, хотя бы один из этих двух вызовов должен быть с await, иначе сам метод будет выполняться синхронно (и это вполне логично).нет (то что выдаются красивые варнинги - они не по этому поводу и ничего не меняют), просто потеряешь контроль над выполнением и без дополнительных танцев не узнаешь когда в действительности выполнятся оба метода.

просто проверить не судьба я так понимаю ...
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682140
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)LRЕсли эти вызовы производятся из async-метода, то да, хотя бы один из этих двух вызовов должен быть с await, иначе сам метод будет выполняться синхронно (и это вполне логично).нет (то что выдаются красивые варнинги - они не по этому поводу и ничего не меняют), просто потеряешь контроль над выполнением и без дополнительных танцев не узнаешь когда в действительности выполнятся оба метода.

просто проверить не судьба я так понимаю ...
Мдя)) Почитать документацию и узнать что такое async-методы не судьба, я так понимаю...
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/await An await expression does not block the thread on which it is executing. Instead, it causes the compiler to sign up the rest of the async method as a continuation on the awaited task. Control then returns to the caller of the async method. When the task completes, it invokes its continuation, and execution of the async method resumes where it left off.

An await expression can occur only in the body of its enclosing method, lambda expression, or anonymous method, which must be marked with an async modifier. The term await serves as a keyword only in that context.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682142
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,


Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;

namespace ConsoleApp1
{
    class c
    {
        async Task<int> t1(int m)
        {
            await Task.Delay(m);
            Console.Write("t1 = ");
            Console.WriteLine(m);
            return 0;
        }
        async Task<int> test(int m)
        {
            t1(m);
            t1(2 * m);
            return await t1(0);
        }
        async Task<long> testcall()
        {
            Stopwatch sw = Stopwatch.StartNew();
            await test(1000);
            return (sw.ElapsedMilliseconds);
        }
        public long Test2()
        {
            var d = testcall();
            d.Wait();
            return d.Result;
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            c a = new c();
            Console.WriteLine(a.Test2());
            Console.ReadKey();
        }
    }
}


Код: plaintext
1.
2.
3.
t1 = 0
18
t1 = 1000
t1 = 2000
занятно, да?
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682145
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRМдя)) Почитать документацию и узнать что такое async-методы не судьба, я так понимаю...
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/await An await expression does not block the thread on which it is executing. Instead, it causes the compiler to sign up the rest of the async method as a continuation on the awaited task. Control then returns to the caller of the async method. When the task completes, it invokes its continuation, and execution of the async method resumes where it left off.

An await expression can occur only in the body of its enclosing method, lambda expression, or anonymous method, which must be marked with an async modifier. The term await serves as a keyword only in that context. эта фраза никак не противоречит моим словам, просто понимаешь ты её неправильно
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682162
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)занятно, да?
Ничего занятного. Асинхронный метод здесь нужен лишь в одном месте, и, разумеется, с await.
Код: 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.
    class c
    {
        async Task<int> t1(int m)
        {
            await Task.Delay(m);
            Console.Write("t1 = ");
            Console.WriteLine(m);
            return 0;
        }
        int test(int m)
        {
            t1(m);
            t1(2 * m);
            var t = t1(0);
            t.Wait();
            return t.Result;
        }
        long testcall()
        {
            Stopwatch sw = Stopwatch.StartNew();
            test(1000);
            return (sw.ElapsedMilliseconds);
        }
        public long Test2()
        {
            var d = testcall();
            return d;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            c a = new c();
            Console.WriteLine(a.Test2());
            Console.ReadKey();
        }
    }



kealon(Ruslan)эта фраза никак не противоречит моим словам, просто понимаешь ты её неправильно
Да уж, вижу)))
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682169
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRАсинхронный метод здесь нужен лишь в одном месте
А, возможно, и не нужен вовсе... Смысл async-метода во фразе из приведенной цитаты: "When the task completes, it invokes its continuation, and execution of the async method resumes where it left off." Если никакого продолжения нет, или продолжение не использует результаты task-ов, то какой смысл городить async-метод?
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682177
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 16:22 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1300144&msg=21621776] [21621776]

>Но это не асинхронный вызов. Это асинхронное ожидание,...
<Называйте как хотите, но вторя Вам - асинхронный вызов мне нужен, чтобы I/O операции не блокировали UI поток. Иногда асинхронные операции с базой данных только называются асинхронными (суффикс Async присутствует), на самом деле метод выполняется синхронно. Используемая конструкция реализует асинхронность(параллельность) выполнения I/O.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682197
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

<я не знаю как ставится смайл когда по лбу себя бьёшь>

ноLRЕсли никакого продолжения нет, или продолжение не использует результаты task-ов, то какой смысл городить async-метод? направление мыслей уже правильное
глядишь уже сможешь понять 21619662
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682209
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan) направление мыслей уже правильное
глядишь уже сможешь понять 21619662
угу, читаем посыл
MasterZivТебе вообще зачем __асинхронный__ вызов нужен?
Наверное, чтобы он выполнялся параллельно с остальным кодом...
А как оно будет выполняться параллельно, если ты тут же будешь ждать результат асинхнонного вызова?
еще раз (а лучше два или три) перечитываем (эту гребаную) документацию
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/await An await expression does not block the thread on which it is executing...
и думаем...думаем...думаем...
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682210
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRМдя)) Почитать документацию и узнать что такое async-методы не судьба, я так понимаю...\

Судя по наивным и глупым мессаджам kealon(Ruslan) , это вообще тёмный лес.

Я понимаю, даже не удосужился почитать, не имел дела, да и понятия не имеет о чём идёт речь, но своё однозначное мнение имеет
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682212
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)глядишь уже сможешь понять 21619662
Там слишком глубокий вопрос. В C# все прозаически банально: async/await надо для отзывчивости гуя. Чтобы клик по кнопке не завесил прогу. По встрече await дальнейший код уходит в другой поток, освобождается поток обработки сообщений, тот принимает следующее сообщение виндовса и т.д. Плюсом await дает написать хорошо читаемый код, т.е. синтаксический сахар в чистом виде.

В остальном от async/await пользы не много. Я консольные утилиты пишу, хотел поюзать async/await, но не придумал где, зато пришлось наоборот поискать как синхронно запустить xxxAsync().
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682213
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевНазывайте как хотите, но вторя Вам - асинхронный вызов мне нужен, чтобы I/O операции не блокировали UI поток.

Это можно сделать и без await. Это делали 10 лет назад в тех же винформсах. Поэтому это за рамками топика.


ВМоисеевИспользуемая конструкция реализует асинхронность(параллельность) выполнения I/O.

Нет, I/O здесь выполняется синхронно, в синхронном коде. Вы просто реализуете асинхронное ожидание результата. Но если так нравится, используйте ради бога, но это немного за рамками топике.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39682214
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)направление мыслей уже правильное
глядишь уже сможешь понять 21619662

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

В остальном от async/await пользы не много. Я консольные утилиты пишу, хотел поюзать async/await, но не придумал где, зато пришлось наоборот поискать как синхронно запустить xxxAsync().

У вас что, патологическая неприязнь к литературе, к справочным материалам? Вы хотя бы почитайте на оф. сайте, я уж не говорю о какой-либо практике.

Прозаически банально это в вашем воображении. Нет, async/await нужен вовсе не только для отзывчивости гуя, это прекрасно решали ещё 10 лет назад, существует как минимум 2 асинхронных API, до появления TAP. Но я сомневаюсь, что вы о них вообще слышали.
...
Рейтинг: 0 / 0
25 сообщений из 252, страница 2 из 11
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Зачем нужен await?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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