Уроки C# - операторы async await - Урок 15

2019 ж. 7 Сәу.
87 480 Рет қаралды

Донаты и на кофе ➜ t.me/win10tweaker/171
Эксклюзив для спонсоров ➜ / xpuct
Если недоступна спонсорка ➜ vk.cc/ctNjM7
Выполнить асинхронно:
pastebin.com/raw/BBvfT7fC
Основной канал:
/ jailbreakvideo
#async #await #Task #Thread #СиШарп

Пікірлер
  • Боже, где ты был, когда я все это изучал. Так хорошо разжевал. Мне днями на пролет приходилось в документации копаться, задачу сделал, но так и не понял нормально, как оно работает. А тут вот как оно просто. Блин круто делаешь.

    @user-zd6di5mq9z@user-zd6di5mq9z5 жыл бұрын
    • Как успехи в обучении??)

      @user-lo1lh2nv6p@user-lo1lh2nv6p4 жыл бұрын
    • Как идет развитие?, уже 10 месяцев прошло

      @user-ws6us6qq9k@user-ws6us6qq9k4 жыл бұрын
    • Если честно, для 10 месяцев в шарпе продвинулся не так сильно, как бы мог. Да не испытываю проблем в написании проектов на wpf mvvm или чего-то простого на asp mvc, но думается мне, за такой срок уже работу найти можно было бы, а я так и на собеседование не сходил. Так что развитием своим шарповским не удовлетворен, на несколько месяцев вообще перешел на питон и Vue js, даже сейчас пишу на питоне чаще. Главная ошибка, которую я совершил, это неадекватно начал стараться по учебе, что привело в конце семестра к полному нежеланию что-либо делать, в этом семестре пока все ок, успел написать пару проектов для резюме, лениво так вот продвигаюсь. Спасибо, что спросили, Господа. (Блин, вы напомнили мне это, теперь мне стыдно за зря потраченное время)

      @user-zd6di5mq9z@user-zd6di5mq9z4 жыл бұрын
    • @@user-zd6di5mq9z Что значит в твоем понимании *неадекватно старался*?

      @user-ws6us6qq9k@user-ws6us6qq9k4 жыл бұрын
    • ​@@user-ws6us6qq9k, приходил после учебы домой и учился еще там до поздна, меня что-то торкнуло и я решил сдать все лабы очень быстро. А неадекватно это для меня, т.к. обычно я сдаю все ближе к концу семестра, спокойно, не торопясь (ну как все короче). Сначала было классно, за пару месяцев избавиться от части предметов, мне нравилось это ощущение, но я мало того, что не смог поддерживать такую скорость дальше, так я еще и сдулся и вообще не хотел ничего. Теперь стараюсь дозировать нагрузки и мешать его с отдыхом.

      @user-zd6di5mq9z@user-zd6di5mq9z4 жыл бұрын
  • Эти 20 минут были лучшие за последнее время.

    @t3m4ch54@t3m4ch545 жыл бұрын
    • подписываюсь под каждым словом!

      @user-ix8lh7ou3u@user-ix8lh7ou3u2 ай бұрын
  • Лучшее обьяснение работы async/await, что я видел.

    @Jalaveyan@Jalaveyan3 ай бұрын
  • Отличная подача, я смотрю стримы разных кодеров, и они растягивают на лекции и на больше часа написания кода. Ты за 20 минут все рассказал на ура! Тем самым я закрепил основу основ, спасибо!

    @svyatoslav4043@svyatoslav40433 жыл бұрын
  • Самые лучшие уроки по с# которые я смотрю на Ютюбе. Все разжовано, чётко, без воды.

    @profitergrant@profitergrant4 жыл бұрын
  • "Сразу говорю: где-нибудь, что-нибудь, я не знаю" в рамочку поставлю у себя в комнате.

    @leonbishop7404@leonbishop74044 жыл бұрын
    • повешу даже. на стену.

      @leonbishop7404@leonbishop74044 жыл бұрын
  • ОТЛИЧНЫЙ КАНАЛ,ВСЕ ОЧЕНЬ ДОСТУПНО РАСКАЗЫВАЕШЬ ПРОСТЫМ ЯЗЫКОМ,ОЧЕНЬ РАД,ЧТО ТЫ ЕСТЬ!ПРОДОЛЖАЙ СНИМАТЬ ВИДЕО.

    @mikkimorfin3@mikkimorfin34 жыл бұрын
  • 13:20 button1.Left++; Если нужно по Y то button1.Top++; MSDN: Используйте Location свойство, чтобы одновременно задать координаты X и Y элемента управления. Чтобы задать расположение по отдельности, используйте Left подсвойство (X) или Top (Y) элемента управления. Не пытайтесь неявно задать координаты X и Y Point структуры, представляющей расположение кнопки, так как эта структура содержит копию координат кнопки.

    @Max1GameChannel@Max1GameChannel2 жыл бұрын
    • Так? Верно? async void Method() { while (button1.Left < 700) { button1.Left++; await Task.Delay(1); } }

      @SAYREXPlay@SAYREXPlay2 жыл бұрын
    • @@SAYREXPlay угу

      @Max1GameChannel@Max1GameChannel2 жыл бұрын
    • @@Max1GameChannel спасибо

      @SAYREXPlay@SAYREXPlay2 жыл бұрын
  • мне надо за неделю-две написать autochess, курсач. Спасибо, мужик, спасаешь нереально!

    @user-ii2hp9tp1z@user-ii2hp9tp1z4 жыл бұрын
  • Хачатур, вот смотрю твои уроки и вижу - ты очень приятный человек, таких мало на Ютубе )))) и подача материала у тебя отличная.

    @dasramm8513@dasramm85132 жыл бұрын
  • Просто какой-то нереально крутой урок. Спасибо огромное!

    @andreyfedyaev8340@andreyfedyaev8340 Жыл бұрын
  • Спасибо! Очень хорошо воспринимается когда показываешь графически!

    @mirlan19@mirlan19 Жыл бұрын
  • 17:10 ну while (true) же

    @siriusawp3712@siriusawp37124 жыл бұрын
  • Случайно наткнулся на это видео. У вас талант объяснять, большое спасибо!))

    @vladislav3105@vladislav31052 жыл бұрын
  • Это самое понятное объяснение этой темы которое я видел, автору огромное спасибо!

    @flepjack@flepjack3 жыл бұрын
  • Спасибо большое! Очень классно, что пример показали на форма, там асинхронное программирование чаще всего применяется

    @-anonim-3008@-anonim-3008 Жыл бұрын
  • Приветствую Христ! Очень полезные уроки, почти все видео про C# досмотрю и везде поставлю лайки. Дай Бог постараюсь сделать донат позже. Такие уроки заслуживают от нас поддержки, очень трудно найти ёмкую проффесиональную информацию в кратком видео, да и в начале не было привычно, слушал на скорости x0.75)) продолжайте в том же духе! Дай Бог вам крепчайшего здоровья, всех благ вам и вашей семье!

    @lilyaosim3634@lilyaosim36344 жыл бұрын
  • Очень хорошо объяснил, пример с фильмом отличный)

    @popkovvvv123@popkovvvv1234 жыл бұрын
  • Очень классно объяснил! Рад что посмотрел этот видос)

    @user-mn7dx7xf7j@user-mn7dx7xf7j4 жыл бұрын
  • Автор канала - спасибо вам за уроки, и за то, что разбавляете обучение юмором, это позволяет с меньшим количеством усилий гораздо лучше удерживать внимание, и даже немного вызывает зависимость от вашего контента, уже не первое видео смотрю :)

    @leonbishop7404@leonbishop74044 жыл бұрын
  • автор молодец хорошо объясняет, интересно слушать

    @derwerwerwer8181@derwerwerwer81813 жыл бұрын
  • Спасибо за очень важный труд. Надо бы сохранить себе весь цикл уроков себе на винт, а лучше и на болванки порезать)) Время такое.

    @Jajdushii@Jajdushii2 жыл бұрын
  • Спасибо вам большое. Спасли от проблемы. Два часа сидел голову ломал.

    @bakhtiyarov_dj@bakhtiyarov_dj7 ай бұрын
  • Быстро скачал весь плейлист, чтобы эти лучшие уроки не запретили!

    @puser-yh9lv7kl1h@puser-yh9lv7kl1h4 жыл бұрын
    • правильная мысль

      @sabiradil@sabiradil4 жыл бұрын
    • Ну и как, запретили?

      @Uni-Coder@Uni-Coder3 жыл бұрын
    • @@Uni-Coder Теперь ситуация в корне поменялась.

      @1pravoslavie1@1pravoslavie12 жыл бұрын
    • @@1pravoslavie1 ниче не запретили

      @user-be9rc4yz8r@user-be9rc4yz8r Жыл бұрын
  • спасибо вам большое!!! не заметил как прошел урок))

    @yourmuse3234@yourmuse32343 жыл бұрын
  • Супер уроки, благодарю от души!

    @toshmatov@toshmatov2 жыл бұрын
  • мое почтение , благодарю за урок

    @kakoytochel2286@kakoytochel22862 жыл бұрын
  • Реально лучшие уроки программирования

    @Roman-tt2rg@Roman-tt2rg4 жыл бұрын
  • Спасибо за объяснение на пальцах для начинающих

    @lomshakov@lomshakov3 жыл бұрын
  • Всё классно объясняешь, продолжай в том же духе! Теперь я наконец догнал эту шляпу

    @develop1136@develop11364 жыл бұрын
  • Шикарно объяснил, спасибо!

    @matrixon@matrixon3 жыл бұрын
  • Спасибо за ваш труд)

    @ramil9209@ramil92093 жыл бұрын
  • Очень круто объясняет!

    @zoch4287@zoch42872 ай бұрын
  • Супер! Все очень просто и понятно

    @MRalex4313@MRalex43133 жыл бұрын
  • Блин, вы идеально объясняете, даже до меня тупоголового вся информация доходит

    @sheonaner@sheonaner3 ай бұрын
  • Спасибо большое за объяснение!

    @HDunno@HDunno Жыл бұрын
  • Крутое объяснение! Респект!

    @user-ow1he8qm2h@user-ow1he8qm2h Жыл бұрын
  • Чувак ты клёвый) 😂

    @U-ru-Ru@U-ru-Ru4 ай бұрын
  • отличный канал! Спасибо! Спасибо, отличный урок! Могли бы вы рассказать про много файловые проекты. Я не C# программист. но приходится периодически писать небольшие программки на C#.

    @maxdark9817@maxdark98175 жыл бұрын
  • Лукас) Спасибо за урок)

    @vladisslavss@vladisslavss2 жыл бұрын
  • Спасибо, хорошая подача.

    @alexandrpyatov6896@alexandrpyatov68964 жыл бұрын
  • Спасибо огромное, мужик!

    @alexseley8633@alexseley86338 ай бұрын
  • Классно объясняешь!

    @hello_world_zz@hello_world_zz3 жыл бұрын
  • Сейчас она закроется. 3. всё. )) Спасибо за урок, мне нужно было увидеть эти уроки раньше, чем я прочел 400+ страниц Герберта Шилдта и чуть не спалил себе жопу пытаясь понять, что он там блин пишет.

    @alvoltta@alvoltta4 жыл бұрын
    • У Меня были такие же чувства при его прочтении =)

      @XpucT@XpucT4 жыл бұрын
    • @@XpucT на столько много терминов и примеры в консоли сразу с классами, наследованием уже страницы с 40й, учитывая что эта тема начинает обсуждаться на 250+, код ничего не умеет, он просто есть. кошмар. Но после 16 уроков прочтенная информация начинает собираться во что то систематизированное.

      @alvoltta@alvoltta4 жыл бұрын
  • C# такой: "Я подсмотрю у тебя, JS?" JS: "Да, только не списывай 1 в 1." C#: "Да, да 😆"

    @azerqgaming@azerqgaming Жыл бұрын
    • Для разнообразия точку с запятой в конце строк буду ставить

      @XpucT@XpucT Жыл бұрын
    • @@XpucT кстати TypeScript иногда очень Шарп напоминает, чувствуется рука Майкрософт :)

      @azerqgaming@azerqgaming Жыл бұрын
    • @@azerqgaming +++

      @XpucT@XpucT Жыл бұрын
  • 11:50 Мы не видим, как обновляется лейбл не потому, что он быстро обновляется, а потом, что цикл выполняется между кадрами отрисовки) Мелкая неточность, но глаз мозолит.

    @ruslan_yefimov@ruslan_yefimov2 жыл бұрын
  • Вот это обьяснение.... 20 минут пролетели за минуту. Спасибо=)

    @user-sm6du2wh7r@user-sm6du2wh7r Жыл бұрын
  • Боже, спасибо мужик !.

    @vsaliyy@vsaliyy4 жыл бұрын
  • спасибо) очень интересно)

    @user-zk3ho3to2d@user-zk3ho3to2d4 жыл бұрын
  • Спасибо большое за урок. Сделал прикольную штуку, по нажатии одной кнопки откуда-то выезжает вторая, первая прячется и наоборот. кому интересно, ниже код на форме две кнопки button1, location(40;90), и button2, location(120; 40). Размер формы 252 на 252, на переднем плане label1, закрывающий нижнюю часть формы и кнопку. FormBorderStyle(FixedSingle) и код using System; using System.Drawing; using System.Threading.Tasks; using System.Windows.Forms; namespace Program2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { MoveBtn1(); } async void MoveBtn1() { while (button2.Location.Y != 90 && button1.Location.Y != 140) { button1.Enabled = false; button2.Enabled = false; button1.Location = new Point(button1.Location.X, button1.Location.Y + 1); button2.Location = new Point(button2.Location.X, button2.Location.Y - 1); await Task.Delay(1); } button1.Enabled = true; button2.Enabled = true; return; } private void button2_Click(object sender, EventArgs e) { MoveBtn2(); } async void MoveBtn2() { while (button2.Location.Y != 140 && button1.Location.Y != 90) { button1.Enabled = false; button2.Enabled = false; button1.Location = new Point(button1.Location.X, button1.Location.Y - 1); button2.Location = new Point(button2.Location.X, button2.Location.Y + 1); await Task.Delay(1); } button1.Enabled = true; button2.Enabled = true; return; } } }

    @BlendLogDev@BlendLogDev4 жыл бұрын
  • Видео просто супер!!! Спасибо большое. Привет всем! А если необходимо сделать несколько потоков (например: разбить на 4 потока, т.к. в процессоре 4 ядра, сложное вычисление:))? Потом полученную информацию с этих 4 потоков вывести как результат (сумму)?

    @r.i8753@r.i87533 жыл бұрын
  • Классный способ подачи информации 👍👍👍👍 (я не с улицы, у меня 10 лет опыта, бакалавр )

    @hello_world_zz@hello_world_zz4 жыл бұрын
  • Спасибо) при создании бургер меню на форме, сильно выручает) только что заюзал) 👍

    @user-tn3bw1wg8w@user-tn3bw1wg8w5 жыл бұрын
  • Очень и очень хорошо)

    @stemykay4773@stemykay47732 жыл бұрын
  • 2 дня занимался фистингом с программой чтоб что-то пофиксить не помню уже что. А оказалось что все мои беды могли быть исправлены async'ом и await'ом.

    @voxel1547@voxel15473 жыл бұрын
  • Храни тебя Боженька=)

    @user-vl8su6br1g@user-vl8su6br1g Жыл бұрын
  • То чувство, когда сначала узнал, что такое генераторы, потом корутины, и только сейчас наконец до конца понял принцип работы async-await

    @denissaygin3371@denissaygin33714 жыл бұрын
    • Точно также Я не понимал, когда читал книги и изучал курсы - зачем Мне строить ракету на луну, чтобы просто удалить файл... Зачееем?? Поэтому в своём курсе Я иду в своём порядке. Сначала задача, потом идея, потом решение. Без пустых, давайте построим шатл...

      @XpucT@XpucT4 жыл бұрын
  • Офигеть, ты крут

    @kerildash@kerildash2 жыл бұрын
  • Когда делал кастомный скролл-бар не нашел инфы о простой задержке, поэтому использовал Timer. Надо попробовать await Task.Delay(); Может быть это будет проще.

    @happyfog15@happyfog152 жыл бұрын
  • Два года назад я с этой хренью так и не разобрался. Прога в цикле рисовала листы с заполненными табличками в файле excel из таблицы с данными. Пока она это делала, она висела(листов было штук по 500-900 и минуты 1.5 это дело происходило). :) В итоге сделал костыль в виде лэйбл который писал циферками номер создаваемого листа и пользователю сказал чтоб он не дергался что программа зависла, мол пишет тебе циферки, значит листы создаются. Оказывается что так всё просто. надо было цикл в метод вытащить и прогресбар повесить с тем же счетчиком, равным количеству листов. Спасибо за твой уроки! Реально, заумное гавно человеческим языком сразу проще воспринимать.

    @korwin86@korwin864 жыл бұрын
    • Я думаю, что дело не в заумном говне, а в том, что люди думают, что они кажутся умнее, когда пытаются заумно говорить. Хотя цель у учителя должна быть объяснять всё, а не просто учить. И когда всё понятно, тогда и учится проще. Не нужно запоминать - всё и так понятно =)

      @XpucT@XpucT4 жыл бұрын
  • 14:31 нужно ещё привязать к времени, потому что у меня она за секунду успевает на 2700 переместиться иначе у всех скорость разная будет

    @omoloni@omoloni4 жыл бұрын
  • ОГРОМНОЕ спасибо

    @dmitryyakovlev3003@dmitryyakovlev30033 жыл бұрын
    • делал генерацию уровней в игре, очень пригодились эти функции

      @dmitryyakovlev3003@dmitryyakovlev30033 жыл бұрын
  • синхронно - это когда вместе одно и то же делают, асинхронно - когда одновременно делаются разные вещи)

    @AllRockAndMetal@AllRockAndMetal5 жыл бұрын
    • не совсем так. если я в очереди пропущу народ на кассе, пока мне друг не скинет сотку на сиги, это не значит что кассир обслужит меня и очередь параллельно

      @dvdrelin@dvdrelin3 жыл бұрын
    • @@dvdrelin не значит, и что? я не понял, к чему ты вообще. И да, аналогия не является аргументом. Объясни прямо то, что ты хочешь.

      @AllRockAndMetal@AllRockAndMetal3 жыл бұрын
    • @@AllRockAndMetal это я к тому, что вы путаете два понятия. синхронно, это когда одна задача следует четко за другой, и пока одна не завершится - следующая не стартанет. асинхронно - это когда одна задача не успев завершится может отдать ресурс для других его потребителей, с целью неблокирования этого ресурса собой. а параллельно, это когда два независимых процесса/задачи выполняются независимо друг от друга стартовав одновременно.

      @dvdrelin@dvdrelin3 жыл бұрын
    • @@AllRockAndMetal аналогия может быть аргументом, но не обязана. это зависит от способности ума рассуждать)

      @dvdrelin@dvdrelin3 жыл бұрын
    • @@dvdrelin аналогия не может быть аргументом, она может просто совпасть, но какой смысл проверять эти совпадения. Аналогия помогает объяснить что-то по другому. То, как ты написал выше, сразу понятно стало, спасибо) я рассуждал из значений самих слов, в программировании да, меняется это все)

      @AllRockAndMetal@AllRockAndMetal3 жыл бұрын
  • Вот еще очень понятный пример, как это работает: class Program { static void Main(string[] args) { var a = new Program(); a.M(); Console.WriteLine("qq"); Console.ReadKey(); } async void M() { await Task.Run(() => { while (true) { Console.WriteLine("sleep"); Thread.Sleep(2000); } }); } } Пока не нажмем кнопку, асинхронный метод будет выполняться. После нажатия - работа программы прекращается, что означает готовность программы не зависнуть на вызове метода M

    @ilya9261@ilya92612 жыл бұрын
  • Первая действительно сложная тема для меня. Раньше немного игрался с Delphi и PHP, там такого нет (или не добрался)

    @user-gm6xg4hd4i@user-gm6xg4hd4i4 жыл бұрын
  • Сам X в location не можно менять, так как это структура. Есть каким-то образом всё же поменять X, то в кнопке не изменится значение. Это специфика хранения в памяти объектов.

    @Slonick@Slonick5 жыл бұрын
    • да, но вместо икса можно свойство left использовать

      @user-be9rc4yz8r@user-be9rc4yz8r Жыл бұрын
  • Все понятно и интересно, спасибо за урок!

    @user-oh3ew8qm3s@user-oh3ew8qm3s4 жыл бұрын
  • Только изучаю шарп и в голове у себя уложил концепцию async await так: В JS ассинхронность широко распространена и применяется. Но там для реализации асинхронности требуется писать код своеобразным стилем. Например. посылаем аякс запрос на сервер и хотим обработать результат (пример из jQuery): $.post( "ajax/test.html", function( data ) { $( ".result" ).html( data ); }); Получается, что мы разбили функционал на 2 функции. Первая что то делает до отправки запроса и отправляет сам запрос. Вторая - это анонимна функция, которую мы передам в параметр метода post, она обрабатывает результат запроса... Для меня это понятная и привычная концепция, но читать её не очень удобно. Один целостный функционал разбивается на 2 функции. async await - это такой синтаксический сахар, который позволяет оставить запись этого функционала в рамках одного метода. Я так понял, что когда мы пишем async - это указание компилятору, что внутри метод будет разделён на 2 или более "подметодов". И разделителем выступает вызов методов с ключевым словом await. Всё что до него и сам await метод выполняются в первом "подметоде", а всё что после await как бы попадает в отдельную функцию ("подметод"), которая вызовется спустя время...

    @RUSich10@RUSich102 ай бұрын
  • Спасибо, урок веселый и доступным языком

    @potuStoronka@potuStoronka4 жыл бұрын
  • Добрый вечер. Подскажите маску слова(точнее набор символов aA 0-9) длина 20 символов между пробелами пробовал так \s[20]\s не сработало, за ранние спасибо

    @user-yx2wx7we5n@user-yx2wx7we5n5 жыл бұрын
  • комментарий в поддержку )

    @user-we6si4mi3x@user-we6si4mi3x2 жыл бұрын
  • Спасибо за видео, отлично объяснил)))))

    @user-ku8hx3om4u@user-ku8hx3om4u4 жыл бұрын
  • можно ту же самую телегу реализовать создав отдельный поток. И выполнять асинхронный код в нем. Так даже уменьшается нагрузка на проц

    @brayanhustler93@brayanhustler934 жыл бұрын
  • Так как мне понравилось делать домашку, но в уроках я ее перестал встечать, то решил сам придумать себе задание Программа имеет три массива. Первый - все числа от 0 до 100. Второй должен быть заполнен нечетными числами, а третий всеми четными в этом диапазоне=) Исходный код: using System; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); button1.Text = "Заполнить мир"; button2.Text = "Посчитать"; } int[] world = new int[100]; int[] first= new int[100]; int[] second = new int[100]; private void button1_Click(object sender, EventArgs e) { for (int i = 0; i < 100; i++) world[i] = i; } private void button2_Click(object sender, EventArgs e) { GetMyNumbers(); } async void GetMyNumbers() { for (int i = 0; i < 100; i++) { if (world[i] % 2 == 0) { second[i] = world[i]; textBox2.Text = second[i].ToString(); } else {first[i] = world[i]; textBox1.Text = first[i].ToString(); } await Task.Delay(350); } } } }

    @kashiroko6632@kashiroko66323 жыл бұрын
    • Могу лучше дать домашку =) Сделай так, чтобы кнопка убегала от курсора. Но начни с простого: сделай так, чтобы кнопка дёргалась пока на ней мышь.

      @XpucT@XpucT3 жыл бұрын
    • @@XpucT вариант, чтобы кнопка дергалась: using System; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } bool epilepsy_b = false; async void epilepsy() { epilepsy_b = true; while (epilepsy_b != false) { button2.Height += 20; button2.Width += 20; await Task.Delay(50); button2.Height -= 20; button2.Width -= 20; await Task.Delay(350); } } private void button2_MouseHover(object sender, EventArgs e) { epilepsy_b = true; epilepsy(); } private void button2_MouseLeave(object sender, EventArgs e) { epilepsy_b = false; } } }

      @kashiroko6632@kashiroko66323 жыл бұрын
    • @@kashiroko6632 немного пропорциональности =) while (epilepsy_b != false) { button2.Location = new Point(button2.Location.X - 10, button2.Location.Y - 10); button2.Height += 20; button2.Width += 20; await Task.Delay(50); button2.Location = new Point(button2.Location.X + 10, button2.Location.Y + 10); button2.Height -= 20; button2.Width -= 20; await Task.Delay(20); }

      @XpucT@XpucT3 жыл бұрын
    • @@XpucT Я пока сделал, чтобы кнопка убегала от курсора. Единственное я не могу понять, в этой строке я же сделал защиту, чтобы кнопка не выходила за грани формы this.Width< point_x + button2.Width + 50. (это в условном операторе) sourse code: using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } int point_x = 30; int point_y = 20; private void button2_MouseHover(object sender, EventArgs e) { if (this.Width< point_x + button2.Width + 50){ button2.Location = new System.Drawing.Point(x: point_x = 15, y: point_y += 100); }else if (this.Width >( point_x + button2.Width + 50) ){ button2.Location = new System.Drawing.Point(x: point_x += 100, y: button2.Location.Y); } } }

      @kashiroko6632@kashiroko66323 жыл бұрын
    • @@XpucT Ютуб сжимает коды, давайте в вк спишемся?

      @kashiroko6632@kashiroko66323 жыл бұрын
  • Очень классный материал! Только можно попросить посмотреть такую задачу? Как из асинхронного метода изменять свойства элементов на форме? Нужно изменить текст в label1... или любом другом элементе формы. Написал код: private void button1_Click(object sender, EventArgs e) { if (button1.Text == "Start") { button1.Text = "Stop"; Method(); } else { button1.Text = "Start"; } } async void Method() { await Task.Run(() => { while (button1.Text == "Stop") { Thread.Sleep(1000); label1.Text += " " + DateTime.Now.ToString(); } }); } Ругается на строку label1.Text += " " + DateTime.Now.ToString(); prntscr.com/rvyreg

    @Eltar007@Eltar0074 жыл бұрын
    • Потому что Вы делаете в Debug, а нужно собирать в Release. Чтобы понимать, почему поток "не может" трогать контролы, Вам нужно посмотреть видео про потоки. kzhead.info/sun/qayqeNaecGNqh3k/bejne.html Тем не менее, решение для Вашей задачи: async void Method() { await Task.Run(async () => { while (button1.Text == "Stop") { await Task.Delay(1000); Invoke((Action)(() => { label1.Text += " " + DateTime.Now.ToString(); })); } }); }

      @XpucT@XpucT4 жыл бұрын
  • Лучший

    @nifertum9514@nifertum95144 жыл бұрын
  • Мегаполезный материал спасибо! ЗЫ. А начальник мне запретил пользоваться While (вернее настоятельно попросил его избегать) Для него он потенциально опасен, как и Goto ) Надо ему рассказать про асинхронность, чтобы он не переживал что мой очередной кривой цикл всё подвесит.

    @happyfog15@happyfog152 жыл бұрын
    • Более того, если в _while_ расширить условие до 3 попыток к примеру, то ничего страшного быть не может. Кстати, тот же _goto_ можно всегда if`ать.

      @XpucT@XpucT2 жыл бұрын
    • @@XpucT спасибо, надеюсь скоро и до этого дойду)

      @happyfog15@happyfog152 жыл бұрын
  • спасибо пригодилось

    @3dportableinc64@3dportableinc6410 ай бұрын
  • await Task.Delay(1000); а его при повторном вызове метода можно как то обновить время или остановить предыдущий? что бы он не выполнялся 2 раза

    @NoName-tk4ym@NoName-tk4ym2 ай бұрын
  • XpucT а будут другие технологии рассмотрены ( ASP.NET и другие) ?

    @vmalyk1650@vmalyk16505 жыл бұрын
    • Может быть.

      @XpucT@XpucT5 жыл бұрын
    • Да вот по ASP. NET бы такие понятные уроки запилить - было бы вообще пушка! А то там реально дофига в чем разбираться нужно. Тоже хочу его освоить...

      @MileshkoVladimir@MileshkoVladimir4 жыл бұрын
    • MVC

      @user-hz7cr2wo5u@user-hz7cr2wo5u4 жыл бұрын
  • Классно рассказываешь! Есть вопрос. Есть ли способ сбросить выполнение async метода? Например, что бы прервать выполнение метода во время Delay.

    @seldemirov@seldemirov4 жыл бұрын
    • Делать перед Delay проверку if. А если пауза длинная, то разбить её на несколько и уже внутри сделать проверку. await Task.Delay(330); if (уже не надо) return; await Task.Delay(330); if (уже не надо) return; await Task.Delay(330);

      @XpucT@XpucT4 жыл бұрын
    • @@XpucT А из другого метода сбросить этот не получится?

      @seldemirov@seldemirov4 жыл бұрын
    • ​@@seldemirov сделать так, чтобы метод принимал проверку, нужно ли сбрасывать. Про методы есть отдельное видео в Уроках. Там показываю, как методы могут принимать аргументы.

      @XpucT@XpucT4 жыл бұрын
    • @@XpucT Спасибо! Буду смотреть и разбираться.

      @seldemirov@seldemirov4 жыл бұрын
  • А видел типо писать просто перед строкой await. Это типо тоже самое что и Task.Run, только для одной строки?

    @great8814@great88142 жыл бұрын
  • Слово асинхронно используется потому, что задачи стартуют и заканчиваются не одновременно.

    @user-lc9wd8xu2r@user-lc9wd8xu2r2 жыл бұрын
  • Здравствуй, лучший в мире препод, жалею что у меня в школе нет такого информатика. Хотел спросить как генерировать случайные числа в выбранном диапазоне. Хочу написать что-то типа аим тренера, хочу перемещать кнопку по полю на рандомные точки но не знаю как сгенерировать координаты, заранее спасибо.

    @grabson8232@grabson82324 жыл бұрын
  • кстати есть фишка можно писать не label1.Text = i.ToString(); а label1.Text = i+""; так можно сократить код)

    @eutiopiy2700@eutiopiy27004 жыл бұрын
    • Ах тыж хитрая жопа)

      @ilyastrojnov7627@ilyastrojnov76274 жыл бұрын
    • label1.Text = $"{i}"

      @RUSlTUZ@RUSlTUZ4 жыл бұрын
    • @@RUSlTUZ у меня всёравно код короче получаеться)

      @eutiopiy2700@eutiopiy27004 жыл бұрын
  • Привет всем! Подскажите, кто в курсе. Есть ли принципиальная разница в вариантах если: прописать асинхронный метод, например async byte ReadBuffer(){...}, и вызвать его через Task.Run(() => ReadBuffer();), как рассказывается в этом уроке, или такой вариант: реализовать метод как задачу async Task ReadBuff(){...} и вызвать таском вот так Task.Run(ReadBuff); Есть ли какая-то разница, кроме сокращения кода при вызове метода?

    @MileshkoVladimir@MileshkoVladimir4 жыл бұрын
    • Привет 🖐 В данном случае разницы нет вообще. И так и так можно.

      @XpucT@XpucT4 жыл бұрын
    • @@XpucT отлично! Большое спасибо за уроки! Классно рассказываете 😉👌

      @MileshkoVladimir@MileshkoVladimir4 жыл бұрын
  • Хачатур, еще раз привет и еще вопросик. У тебя используются конструкции с async/await, а есть еще конструкция Task.Factory.StartNew(() => {}), которая, насколько я помню, создает как раз - таки новую задачу и выполняет ее асинхронно. В нее можно отправить тот - же метод, например. Ты пользовался? Есть ли какие - то мысли на этот счет о том, что работает быстрее и лучше? Через фэктори визуально вроде удобнее. Спасибо.

    @infinitynoir5441@infinitynoir54414 жыл бұрын
    • Привет 🖐 Всё зависит от задач. Но Мне лично не приходилось. Хороший ответ: stackoverflow.com/a/38423507

      @XpucT@XpucT4 жыл бұрын
    • @@XpucT Отлично, спасибо 👍

      @infinitynoir5441@infinitynoir54414 жыл бұрын
  • Спасибо ! Очень во время ! Весь день убил , прогрессбар даже с бэкграундворкером организовал , а у вас гораздо практичнее!

    @Alex_Lutor@Alex_Lutor Жыл бұрын
  • А если возвращать не void а Task, или, например, вместо string Task. Есть какое-то принципиальное отличие?

    @eugene9699@eugene9699 Жыл бұрын
  • А если делать это таймером ? А таймер уже сам по себе асинхронно работает ? Например делать такую же анимацию?

    @user-ln8qx7wk9h@user-ln8qx7wk9h Жыл бұрын
  • Делает ли Delay задержку в 1 мс, я где-то читал что стандартные задержки имеют погрешность в 17 мс. И чтобы сделать именно 1 мс, надо использовать другую библиотеку.

    @UFO26@UFO26 Жыл бұрын
    • Неправда. Какую библиотеку ни добавляй, что ни меняй, любой случай может вызвать погрешность из-за специфики самого процессора.

      @XpucT@XpucT Жыл бұрын
  • Добрый день, Хачатур. Есть ли на канале ролик о инкапсуляции и наследования?

    @jozex8141@jozex81414 жыл бұрын
    • Добрый 🖐 Пока нет. Но будет ;)

      @XpucT@XpucT4 жыл бұрын
    • фух, весь обыскался уже) жду с нетерпением ))

      @jozex8141@jozex81414 жыл бұрын
  • 4:50 а если убрать await и async, разве не будет асинхронности? Task.Run() же вроде так и так сработает асинхронно.

    @sarbasov@sarbasov2 жыл бұрын
    • await требует того, чтобы задача ожидалась. Привожу пример: await Task.Run(() => { while (File.Exists(@"C:\Users\Admin\Desktop\1.txt")) { } }); MessageBox.Show("Test"); MessageBox не будет показан пока файл существует. А если сделаешь так: Task.Run(() => { while (File.Exists(@"C:\Users\Admin\Desktop\1.txt")) { } }); MessageBox.Show("Test"); То MessageBox будет показан сразу после вызова Task. И что там в этом Task уже не важно, ибо программа побежала дальше по строкам. await требует ждать и выполнять всё последовательно - по завершении.

      @XpucT@XpucT2 жыл бұрын
  • Подскажи что за шрифт и какой размер?

    @chernobylfx2379@chernobylfx23794 жыл бұрын
  • будут ли уроки по wpf ?

    @garretgrom5823@garretgrom58234 жыл бұрын
  • Эх, эти видео мне бы года 3 назад)) А до какого момента эти уроки будут выпускаться? До того момента, пока ученик не сможет сам полноценное приложение создать?

    @user-bp8vg9pr3z@user-bp8vg9pr3z5 жыл бұрын
    • Как и в любом языке, на котором говорят люди, так и в программировании, сначала нужно выучить основы. Более половины основы уже пройдена. Потом пойдёт специфика. Потом лайфхаки. И уже через несколько видео можно будет полноценно писать любое приложения.

      @XpucT@XpucT5 жыл бұрын
  • То есть получается что await это ожидание внутри асинхронного метода? И нам не важно где мы его поставим но оно почемуто должно там обязательно быть?

    @user-nh1lp8xt4j@user-nh1lp8xt4j Жыл бұрын
    • Примерно так =)

      @XpucT@XpucT Жыл бұрын
  • Спасибо ! Тем не менее остался один , возможно глупый вопрос: Представьте себе директорию , в котором уж ооочень много файлов и они большого размера, кроме того - постоянно появляются новые. Какой будет самый эффективный способ для их чтения ? Читать в Parallel.foreach каждый файл , или же асинхронно ? Или опять , цикл по файлам в обычном foreach , а строки забирать в Paralell.foreach? Или же Parallel.foreach по файлам , но само чтение асинхронное ? Простите , что возможно не в тему данного ролика.

    @anatgu3397@anatgu33975 жыл бұрын
    • Или же Threadами )

      @anatgu3397@anatgu33975 жыл бұрын
    • @@anatgu3397 await Task.Run(() => { using (BufferedStream stream = new BufferedStream(File.OpenRead(file), 100000)) // фокусы-покусы }

      @XpucT@XpucT5 жыл бұрын
    • @@XpucT благодарю , буду пробовать.

      @anatgu3397@anatgu33975 жыл бұрын
  • а после завершения асинхронной части метода он все равно продолжает работать асинхронно, либо остальные потоки останавливаются до завершения данного метода?

    @anderwafe@anderwafe3 жыл бұрын
    • Нет, асинхронность заканчивается на блоке кода и ограничена следующими символами: }); То есть таким образом инструкции внутри завершены, и дальше всё пашет синхронно. Но если сам по себе метод асинхронный, то место, откуда был вызван метод, не будет ждать завершения метода. Пересмотрите ещё раз.

      @XpucT@XpucT3 жыл бұрын
  • Привет, слушай, я когда Close() вызываю пишет System.InvalidOperationException: "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'Form1' не из того потока, в котором он был создан." в чем ошибка?

    @FANTOZZ-gf4vc@FANTOZZ-gf4vc4 жыл бұрын
    • Привет 🖐 Хороший вопрос. Подробнее о том, как с этим бороться: kzhead.info/sun/qayqeNaecGNqh3k/bejne.html

      @XpucT@XpucT4 жыл бұрын
KZhead