Уроки C# - Потоки, Thread, Invoke, Action, delegate, Parallel.Invoke - C#

  Рет қаралды 95,589

XpucT

XpucT

5 жыл бұрын

Донаты и на кофе ➜ t.me/win10tweaker/171
Эксклюзив для спонсоров ➜ / xpuct
Если недоступна спонсорка ➜
В этом видео Вы узнаете всё о потоках, а также, как решить проблему:
Недопустимая операция в нескольких потоках: попытка доступа к элементу управления не из того потока, в котором он был создан (The calling thread cannot access this object because a different thread owns it).
Форум по C#:
win10tweaker.ru/forum/forum/%...
#Потоки #Thread #Многопоточность #Invoke #Action #delegate #Parallel.Invoke #СиSharp #СиШарп

Пікірлер: 384
@chokayes7830
@chokayes7830 5 жыл бұрын
Отличное объяснение. По делегатам действительно нет ни одного нормального объяснения, только видел пример на коллекции (посчитать к примеру сумму элементов с доп фильтром допустим только четные и т.п.). Эти доп фильтры делать делегатами, и в основном коде вызывать нужный делегат. Но этот пример не живой, ведь вместо всего этого можно использовать лямбда-выражения или вообще LINQ. Другой пример, который встречал - это применение делагатов в обратных вызовах, но там опять же у нас есть события. Т.е. делегаты в чистом виде в нормальном коде не встретишь.
@absamurai
@absamurai 4 жыл бұрын
Вы когда-либо с Event-ами работали? Там делегаты очень применимы. Эдакое сюрное объяснение "с потолка", но когда случится что-то такое делать, оно само по идее в голову придёт, что нужен такой механизм. Так вот пример: Я -- создатель некоторого события "раздача плова в тарелочке с вилочкой" и я раздаю плов, а ко мне приходят люди за пловом в тарелочке и за вилочкой. Эти люди -- делегаты. И вот я раздаю весь такой, а что будет дальше с этим пловом и одноразовой посудой я класть хотел, а люди-то разные: один съест, другой сделает себе из тарелочки воображаемую шапочку, третий обмажется пловом, четвёртый пойдёт мастерить из него взрывчатку... Но твоя (моя т.е.) задача не меняется, я всего лишь раздаю это. А ещё более просто и реально -- это, собственно, о делегировании обязанностей в реальном мире. Например: Вы - интернет-магазин. Вы продаёте товары и Вы ведёте доставку курьерами. Вы формируете заказы к отправке, а куча курьеров их доставляют, но Вася на велосипеде, Петя общественным транспортом, Вова на машине, а Дима вообще рулит большой почтовой службой и выполняет авиа-перевозки. Третий пример: отправка 1 оповещения (новости) в разные соц-сети одной кнопкой. Вы указали, что на событие реагируют только делегаты, принимающие такой-то набор параметров, из которых состоит ваша новость, например (заголовок и содержание) и всё, море обработчиков может обрабатывать эти данные и заниматься их публикацией каждый в своей соц-сети. Издатель же новости в свою очередь лишён головной боли о том как же эту новость опубликовать везде. Он делегировал эту обязанность другим, и эти другие -- делегаты.
@bylabunskyy2227
@bylabunskyy2227 4 жыл бұрын
@@absamurai про интернет-магазин прям из языка снял. Вот пример с рынком: тебе нужна малина? Ты идешь на рынок(к примеру) или в любое удобное место где её можно купить. Ты не идешь на огород и не обращаешься к владельцу производства потому что это неудобно. Так вот тетя Зина - это делегат.
@pasha5760
@pasha5760 4 жыл бұрын
Делегаты придумали именно для событийного программирования. Смысл в том что делегат может иметь множество ссылок на разнице методы (техника подписки и отписки на собитие, хотя в обёртке события самый обычный делегат). Главное что бы сигнатура подходила. + Лямбда выражение (тоже делегат предикат). Так то все делегаты уже придуманы свои пишешь если не знаешь системного. Такие как Action, Func, Predicat, и т.д. Урок хорош!)
@indawl
@indawl 4 жыл бұрын
@@absamurai Чел с WindowsForms не работал похоже, там все события на делегатах
@Usermage_
@Usermage_ 3 жыл бұрын
Мне приходилось использовать делегаты, чтобы обновлять значения в режиме реального времени в таблице datagridview в WinForm. Было клиент-северное приложение, на клиенте был запущен поток, который получал данные от сервера и заносил инфу в таблицу. Код обновления данных в таблице выполнялся внутри делегата, иначе возникла ошибка, точное описание не помню, но че то там с доступом. Ниже приведен упрощенный фрагмент кода, где использовался делегат. private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) // получить данные { while (client.Connected == true) // пока клиент подключен { lock (locker) // для синхронизации потоков { // получение и обработка данных this.Invoke(new MethodInvoker(delegate { // обновление данных в таблице })); } }; }
@adamiyy
@adamiyy 5 жыл бұрын
Тайны делегатов раскрыты. Ох сколько я их гуглил. За Parallel отдельное спасибо, это что-то с чем-то.
@sergezaybo6572
@sergezaybo6572 3 жыл бұрын
Просмотрел все уроки. Всё понятно, кратко и по существу. Большое спасибо. Если есть возможность, сделай урок по проблематике защиты кода от дизасемблеров и вообще насколько вероятно сохранить алгоритм программы в секрете.
@malygos1898
@malygos1898 3 жыл бұрын
Реально живое, человеческое объяснение. Спасибо автору за адекватный канал.
@PK-yd4ki
@PK-yd4ki 3 жыл бұрын
ХрисТ, ты даже не представляешь себе какой ты молодец. Тебя очень приятно слушать и многие вещи становятся понятнее, чем раньше. Знать и донести это две разные вещи и ты владеешь обоими.
@gennadysmirnov5362
@gennadysmirnov5362 3 жыл бұрын
обойи вещи
@PK-yd4ki
@PK-yd4ki 3 жыл бұрын
@@gennadysmirnov5362 Что? Обои вещи, Чем? обоими вещами. Учи русский!!!
@mikkimorfin3
@mikkimorfin3 4 жыл бұрын
Уроки бомбезные,и как только ты все это запоминаешь,мне бы твоё мастерство.Браво👍👍
@Kozeniuk
@Kozeniuk 5 жыл бұрын
Добрый день уважаемый. Спасибо за общение с Вами.
@ivan140600
@ivan140600 4 жыл бұрын
Спасибо автору за такую подачу материала! Очень круто, что объяснение идёт бегло, понятно и НЕ на задротском языке:)
@lizastepantsova5230
@lizastepantsova5230 3 жыл бұрын
Про язык действительно ценно. Очень живо слушается.
@vladoss4643
@vladoss4643 8 ай бұрын
Да-да-да))) ...Это очень важно: это не важно!!! Но у вас останется...
@lega3893
@lega3893 5 жыл бұрын
Вот это объяснил))). Сколько видосов про потоки смотрел, этот прям с первого раза зашел. Прям все по человечески объяснил, на простом языке. Спасибо. С меня лайк и подписка
@JuzoPC
@JuzoPC 2 ай бұрын
Какие же прекрасные уроки. Информация очень понятная, а видео очень приятно смотреть. Спасибо
@Nick-wz6tz
@Nick-wz6tz 4 жыл бұрын
Спасибо вам огромное !!! Вот уже миллион англоязычных туториалов посмотрела, но лучше вас еще нигде не объяснили, ни на каком языке !
@user-rw1cc7cz4e
@user-rw1cc7cz4e 5 жыл бұрын
Очень круто, спасибо большое за эти уроки. Все очень доступно и понятно, что огромная редкость.
@cryptoeyt
@cryptoeyt 3 жыл бұрын
Очень понятно объясняешь. Про if и else было все очень понятно. Спасибо!
@notn9380
@notn9380 4 жыл бұрын
Хорошо, что я нарвался на тебя почти в самом начале. Спасибо.
@user-rg3ib3kj4j
@user-rg3ib3kj4j 3 жыл бұрын
Большое спасибо, за Ваш труд. У Вас очень хорошо получается!
@_BladeDen_
@_BladeDen_ 2 жыл бұрын
Очень полезное видео - грамотно и доступным языком.
@user-fe2wn8kw7b
@user-fe2wn8kw7b 3 жыл бұрын
Очень грамотный подход! Очень доволен что нашел ваш канал! Подписка
@gennadysmirnov5362
@gennadysmirnov5362 3 жыл бұрын
по-людски по-кайфу объясняешь, спасибо!
@NoName-tk4ym
@NoName-tk4ym Жыл бұрын
Учитель года :) Ты очень хорошо объясняешь! Спасибо, добрый человек :)
@tenzo3096tenzo
@tenzo3096tenzo 2 жыл бұрын
Обычно, подобные уроки ставлю на скорость воспроизведения х1.5 или х2. Тут я впервые захотел чуть понизить скорость подачи :) А в целом круто, четкий грамотно сформулированный поток инфы. Думаю это максимум, что можно уложить в 30 минут, так что за более подробным и вдумчивым перевариванием нужно идти читать документацию. Спасибо за труд!
@DushaNews
@DushaNews 3 жыл бұрын
Отличное объяснение! Благодаря тебе у меня единственного в группе курсовая работа будет с потоками))
@user-bt8ob6du9b
@user-bt8ob6du9b 3 жыл бұрын
Огромное спасибо! Очень понятно. Сразу понял как лучше сделать
@alita9896
@alita9896 5 жыл бұрын
Спасибо огромное за видео, очень помогло.
@belov_dev
@belov_dev 3 жыл бұрын
Это просто восхитительно !!! Можно мне такого препода ? А ? Сколько каналов перелопатил, никто так понятно и находчиво не объясняет, просто вау !
@dobrinyanicitich7514
@dobrinyanicitich7514 4 жыл бұрын
Круто!!! Понятно, и без соплежуйства, спасибо!
@potuStoronka
@potuStoronka 4 жыл бұрын
Спасибо, посмотрела сначала про async await, где все доступным языком разложено по полочкам
@phat80
@phat80 3 жыл бұрын
Для меня самое простое объяснение делегата - ссылка на метод или список ссылок на группу методов. Нужны они для удобства, когда какое-то событие может вызывать различные методы, которые в свою очередь определяются в рантайме, а не на стадии компиляции. В зависимости от каких-то условий или действий пользователя мы можем вызвать тот или иной метод, а так же целый список методов, меняя его при необходимости. Написал все нужные методы, а потом просто тупо добавляешь на них ссылку в делегат или убирай из него. Может плюсы делегатов не особо очевидны, когда метод один и он либо вызывается событием, либо нет и третьего не дано. Но когда присутствует большая вариативность поведения, то делегаты могут очень помочь.
@benjaminBTN
@benjaminBTN 11 ай бұрын
Да, абсолютно верно, наконец-то я тоже до этого допёр!) В данном видео не показана одна важная функция делегатов - это расширения списка методов делегата через простую операцию «+=». Это супер удобно при работе в рантайме
@lamax847
@lamax847 5 жыл бұрын
как хорошо что ты на эту тему видео записал
@sergegreenband7699
@sergegreenband7699 Жыл бұрын
Спасибо за видос. Теперь многое стало чуть яснее.
@Dorinar
@Dorinar 4 жыл бұрын
Спасибо за урок, единственный урок после которого я понял как использовать Thread
@AnkeKatome
@AnkeKatome 2 жыл бұрын
К делегатам добавлю некоторое пояснение. Да делегат в простом варианте является конвертером члена класса "метод" в объект, что-бы с методом можно было обращаться как с любым другим объектом (перемеренные, поля, свойства, параметры и тд.). Делегаты из таких структур появились достаточно рано и стали базисом для последующего синтаксического сахара такие как анонимные методы (как мы собираемся обращаться к анонимному методу если у него нету имени), лямбда-выражения (немного функционального программирования из F# и Омега# в C# которые просто красиво написанные анонимные методы) и типы делегаты Action(0...P16) и Func(return,0...P16) (очень сильно упрощают жизнь если нужны всевозможные колбеэки и актуаторы и последнее это события (события и есть делегат только более красиво написанный, события можно и на чистых делегатах написать, толком разницы нету кроме красивости кода). А живой пример смотри на само слово делегат что в переводе на русский является представитель по типу торговых представителей (орифлеймы всякие), послы в посольствах государственных по нормальному это государственные представители и так далее. Если что-то как-то надо представлять каким либо образом это вот делегат. А так это выросло из шаблона проектирования который так и называется делегат (иногда как шаблон делегирования)
@user-cw9ev9dq4v
@user-cw9ev9dq4v 4 жыл бұрын
Давно видео не выходило, надеюсь у вас всё хорошо. Был бы рад увидеть уроки по EF (core), либо что-нибудь другое связанное с бд. Спасибо!
@XpucT
@XpucT 4 жыл бұрын
Очень занят пока. Будут новые видео ;) Много.
@ozarmehrodilov9698
@ozarmehrodilov9698 4 жыл бұрын
Про делегаты приведу пример. Есть метод который вызывается для заполнения progressBar, и вот у нас где-то там в другом классе, в другом пространстве имен есть метод который считывает огромный файл, и для этого мы создадим делегат и передадим как параметр, чтоб увидеть прогресс выполнения/чтения файла. Для событий без делегатов не обойтись
@MrOlezhandr
@MrOlezhandr 4 жыл бұрын
Очень доходчиво объясняешь, скобки правильно расставляешь, так лучше, чем в строку. Юмора как раз столько, сколько надо) Если возможно - уменьши область захвата видео до размера окна виртуалки, т.к. мелкие символы на 720P не видно нормально (Инет 3G, живу вдали от цивилизации)
@PastuhMedvedey
@PastuhMedvedey 2 жыл бұрын
Очень хорошее видео, спасибо !
@romanrudman5102
@romanrudman5102 5 жыл бұрын
Это было сильно! Спасибо!
@walson4708
@walson4708 5 жыл бұрын
О, христ, я не знал, что ты пилишь уроки). Давно откладывал многопоточку, после шилда так и не вернулся к ней, думаю это жирный намек)
@user-vx2kx6oe6l
@user-vx2kx6oe6l 2 жыл бұрын
Большое спасибо за Ваш труд. Привет из Болгарии ... 🙂
@ItMohican
@ItMohican Жыл бұрын
По моему, необходимость делегатов хорошо объясняет паттерн "Стратегия". Пример такой: У тебя есть определённая стратегия работы. Например: строительство коттеджного посёлка. И у тебя есть проекты строительства домов, дома все похожие, отличаются только в мелочах. Одна из задач в каждом проекте - выкопать котлован под фундамент. Так вот, в каких-то случаях ты можешь загнать туда чернорабочих, и они выкопают (т.к. например, экскаватор туда не проедет). В другом случае на эту же задачу ты отправишь мини-экскаватор. В третьем случае ты отправишь мощный экскаватор с отбойником, (т.к. там к примеру, там находится особо крепкий грунт). Так и в программировании - у нас есть общий метод, с командами - выкопать фундамент, подготовить основание, сделать опалубку, залить фундамент и т.д. а какими методами ты будешь строить каждый конкретный дом - зависит от конкретной ситуации, которая задаётся в конкретном случае и с конкретными условиями.
@Ubuntu-op
@Ubuntu-op Жыл бұрын
Вот по таким видео можно даже научится кодить. И смотреть интересно, и много полезной информации.
@XpucT
@XpucT Жыл бұрын
@coollife4606
@coollife4606 Жыл бұрын
Ааааааа, ты лучший!!!!! Спасибо большое за видео)
@user-yv3hu3tb2o
@user-yv3hu3tb2o 2 жыл бұрын
Отлично объяснил. Спасибо.
@henryparker3593
@henryparker3593 5 жыл бұрын
я тебя обожаю, умоляю делай еще видео
@YarikMud
@YarikMud 5 жыл бұрын
Спасибо за урок, покажи плиз как работать с EF 6(связи, работа с данными и т.п.)
@DmitriyVasil
@DmitriyVasil 4 жыл бұрын
Спасибо, огромное. Такую сложную тему объяснить настолько доступно. Наконец я чувствую,что смогу пользоваться этими инструментами нормально.
@mishabadichel1618
@mishabadichel1618 4 жыл бұрын
Уроки просто топ. Спасибо
@ozarmehrodilov9698
@ozarmehrodilov9698 4 жыл бұрын
2 год работаю программистом C#, и понимаю что много чего еще не знаю. По опыту скажу, автор, ты просто красавчик, объясняешь как надо
@leonbishop7404
@leonbishop7404 4 жыл бұрын
Популярное заблуждение, что надо всё-всё знать. Надо знать достаточно :) НО - далеко не всё!
@igorthelight
@igorthelight 4 жыл бұрын
Второе популярное заблужнение, что чем дольше работаешь - тем профессиональнее становишься. Можно и 10 лет неправильно машину водить :-)
@user-ti1ly4sq2j
@user-ti1ly4sq2j 4 жыл бұрын
Вот спасибо, отлично объяснил.
@ode2877
@ode2877 Жыл бұрын
очень круто, многое понял! Осталось понять как сделать поток который бы выполнял задачи по записи и чтению файлов и передавал их в основной поток (привет из Unity и Monobehavior работающих в основном потоке)
@yz777zhumabayev6
@yz777zhumabayev6 Жыл бұрын
Спасибо большое! Но я хотел услышать про ТреэдПул)))
@21POPOV
@21POPOV 4 жыл бұрын
Делегат - можно понимать как callback функцию. Строготипизированный колбек дает большую гибкость. Во в первых - он гарантирует, что переданная лямбда соответствует сигнатуре, во вторых - внутри своего метода он позволяет на основании своей сигнатуры писать корректный в плане типов код, что помогает не заниматься отладкой 8 часов, в третьих - не обязательно в метод передавать лямбду, хоть иногда это, безусловно, удобно. list.Sort((a, b) => a.Id.CompareTo(b.Id)) например можно заменить на list.Sort(Sort.ById). Делегаты очень широко используются в мире функционального программирования, да и в классическом ООП (например, паттерн шаблонный метод)
@joesatriani1388
@joesatriani1388 3 жыл бұрын
Самое понятное объяснение. Еще бы окошко студии немножко увеличить чтобы не приглядываться... На экране еще много свободного места)
@user-vh1ns6ke8n
@user-vh1ns6ke8n 3 жыл бұрын
Потрясающе!
@xellan9495
@xellan9495 4 жыл бұрын
Классное видео, на тему потоков) Не могли бы снять как одновременно в потоках выполнять одну задачу?
@Pavluha161
@Pavluha161 5 жыл бұрын
Ты когда нибудь отдыхаешь? Спасибо тебе!
@darkcrusaderzxc
@darkcrusaderzxc 2 жыл бұрын
Аналогии автора просто 10 из 10.
@ivann3135
@ivann3135 4 жыл бұрын
Большое Спасибо.
@user-pi3jc9ts3l
@user-pi3jc9ts3l 4 жыл бұрын
Использовал делегат чтобы на одну кнопку вешать 2 метода(старт/стоп), т.е. кнопка вызывает делегат ,а дальше в методе к ему привязывается другой метод и второй клик по кнопке уже для совсем других действий. Может можно было реализовать проще, но это первое что в голову пришло)
@user-no3rr2wk2g
@user-no3rr2wk2g 5 жыл бұрын
Хорошее объяснение. Лайк с меня
@pavelpuchkov7422
@pavelpuchkov7422 4 жыл бұрын
Присоединяюсь ко всем словам благодарности. Спасибо за проделанную работу! Хочу дать обратную связь. (13:09) В строчку или в столбик записан код на экране не очень принципиально. Есть только одно пожелание. Увеличьте, пожалуйста, размер шрифта кода. Если смотреть с телефона, то почти ничего не видно. Спасибо!) PS. На 150% увеличении комфортно (15:35) 🙂
@SCEEF
@SCEEF 11 ай бұрын
Спасибо, перевел свой софт для сжатия игр во много поток, ускорил работу в 2-5 раз) Я еще использовал сплит списка строк, на мини списки по 3 элемента, чтобы обработка шла, в каждом потоке по 3 элемента, вместо всех элементов в одном потоке) Мозг лопнул, но по кайфу работает
@woodlandfantomas2044
@woodlandfantomas2044 Жыл бұрын
По делегатам, строим аналогию с C++. Функцию нельзя напрямую передать в функцию в качестве параметра. Но можно передать указатель (адрес, "делегат") / Даже в C++ не рекомендуют, в настоящее время, использовать указатели на функцию, а использовать класс Functional - аналог лямбда выражений в C#.
@user-br2fr5tk5b
@user-br2fr5tk5b 4 жыл бұрын
Как-то сжато, немного рвано, дёргано, но при этом класно получается ))
@user-nh1lp8xt4j
@user-nh1lp8xt4j 2 жыл бұрын
Мне понравилось объяснение про ружье и звонок)) А я когда проходил делегаты думал что если я не понимаю его применения на практике, то я че-то не так понял и вообще тупой)
@DeXMask
@DeXMask 4 жыл бұрын
Спасибо! выручил! пиши пожалуйста в столбец -проще понимать.... ну по крайне мере мне)))
@battleBoats
@battleBoats 4 жыл бұрын
Спасибо за видео! Отлично всё разъяснено в ролике. Планируете ли снимать ролики по алгоритмам, паттернам? Было бы здорово коснуться темы DI, IoC -контейнеров.
@XpucT
@XpucT 4 жыл бұрын
Да, после ещё несколько тем в Windows Forms приступим к WPF сразу же на MVVM.
@kostya1306
@kostya1306 Жыл бұрын
Круто! Пошел переписывать свой проект ))
@olegalekseev325
@olegalekseev325 4 жыл бұрын
Спасибо тебе. Сделай пожалуйста шрифт по больше. На телефоне сложно смотреть.
@user-bw2qr6iz2c
@user-bw2qr6iz2c 4 жыл бұрын
Про делегаты. Предположим есть комната в которой нет ни окон ни дверей, задача в ней убраться: пропылесосить, протереть пыль. Для решения нужен тот кто уберет комнату и способ в эту комнату попасть. Представим что у нас есть Маша, Петя и Вася - все они могут убрать комнату. Теперь надо их в комнату как-то поместить, есть два варианта: 1) для каждого из них прорубить отдельный вход; 2) сделать ДВЕРЬ.
@XpucT
@XpucT 4 жыл бұрын
Предположим, что Маша, Петя и Вася хотят покушать. Есть вариант каждому кушать из своей тарелки, а можно кушать просто с КАСТРЮЛИ. Нет, не годится. Жду новых примеров. Кстати, после выхода этого видео, спустя какое-то время нашёл применение делегату - доступ к контролу из класса. Это боль...
@user-bw2qr6iz2c
@user-bw2qr6iz2c 4 жыл бұрын
@@XpucT Вопрос изначально был зачем? Ну он же вроде как для соплей) Ну типа есть 15 алгоритмов сортировки массива и какой-нибудь PrintTime() для подсчета времени работы каждого алгоритма. Мы делаем PrintTime(Action ... ) и норм, нет? Подобие функциональной обертки из плюсов.
@mikedastro2930
@mikedastro2930 Жыл бұрын
это просто лучшее объяснение !!!!!!!!!!!)))))
@user-nx8mc1qw6i
@user-nx8mc1qw6i 2 жыл бұрын
Наконец то!!! Наконец-то я поняла эти ***чие делегаты!!!!!!
@tree-service
@tree-service 3 жыл бұрын
спасибо , Дядь.
@lega3893
@lega3893 4 жыл бұрын
А есть ли в планах работа с ком объектами? Было бы здорово получить урок про ним. И что-то видосов новых нет). Очень ждём)))
@ozarmehrodilov9698
@ozarmehrodilov9698 4 жыл бұрын
Советую очень серьезно относится к этому уроку, так как сложно без делегатов и без асинхронной/многопоточной программировании
@tezlin6774
@tezlin6774 4 жыл бұрын
спасибо большое!!!
@user-gl1ti5op4v
@user-gl1ti5op4v 2 жыл бұрын
Спасибо за видео! В одну строку мне кста больше код нравиться, если не очень длинная строка получается.
@vitalyryabchich257
@vitalyryabchich257 3 жыл бұрын
Я постоянно не мог найти инфу по этому всему, пытался нарыть инфу из самых странных источников, но тут нашел это видео, и просто любовь с первого взгляда
@trumpdmitry2288
@trumpdmitry2288 5 жыл бұрын
Можешь сделать урок по (Save / Load ) а так же про защиту сохранений ?
@Abo56Volo
@Abo56Volo 3 жыл бұрын
У меня есть бутылка и она закрытая. "Открытие крышки" - вот наш делегат!. Мы можем открыть эту бутылку нормальным способом, а можно - ложкой; можно зубами тоже (если они здоровые), некоторые могут и глазом.
@piloowar
@piloowar 3 жыл бұрын
Когда следующий урок? Жду с нетерпением !!!
@XpucT
@XpucT 3 жыл бұрын
Будут ;)
@Blastpv
@Blastpv 2 жыл бұрын
Красивее конечно в одну строку. А как на самом деле записывать не важно. Единственное может быть затруднительно понять код тем у кого опыта мало. Лично я всегда смотрю оба варианта, так лучше понимаешь код и как его сокращать =)
@Iamnotagenius
@Iamnotagenius 4 жыл бұрын
По поводу делегатов, в основном используется другая их форма - события. Ну то есть события и есть делегаты, только более продвинутые. Ну уж я надеюсь, что никто не отрицает полезность событий)
@alekseymudla5374
@alekseymudla5374 4 жыл бұрын
По поводу делегатов и директора как раз все понятно. Ты обращаешься именно не к человеку, а к тому, кто выполняет обязанности директора. Если директор в отпуске, за него ответит зам или секретарь, или хз кто. Тебе не важно, кто именно, какой именно человек, главное, чтобы он был уполномечен. А лямбда оператор - это всего лишь синтаксический сахар.
@alexefremov4158
@alexefremov4158 3 жыл бұрын
Живой пример использования делегатов. Вам нужно решить систему из 100 дифференциальных уравнений вида dy/dx =F(x, y1....y100). Правые части системы - функции F записываются как массив делегатов одинаковой сигнатуры. Но начинка внутри каждой функции - разная. Программа видит делегат и вызывает функцию нужного содержания с заданным набором аргументов. Это как указатель на функцию в С.
@JenyaHW
@JenyaHW 4 жыл бұрын
делегат удобен тогда, когда тебе нужен список делегатов (то-есть у тебя есть методы 1,2,3,4,5,6,7) и ты хочешь их выполнять, у тебя есть список с этими методами типа хочу чтобы, выполнялись так 1,2,3,2,2,2,2,2,1,3,4,5 и ну это можно когда количество небольшое прописать вручную, а так существуют делегаты которые можно добавить в список и выполнять когда тебе нужно и в любой последовательности (станки чпу, сценарии какие-то)
@ivann3135
@ivann3135 4 жыл бұрын
Спасибо.
@Fonarickable
@Fonarickable 3 жыл бұрын
Из того что знаю я deligate нужен как атрибут метода. Такой метод не имеет тела и нужен он чтобы запомнить сигнатуру. Например () когда есть коллекция свойств с разными атрибутами и у нас есть метод который возвращает все свойства с одним атрибутом, все свойства с другим и так далее...В этому случае можно написать метод обертку в который передается параметром коллекция и делигативный метод, который проверяет свойство на причастность к атрибуту. И тогда у нас будет не N методов по все атрибутам, а только 2 : один делигат и метод этот делигат использующий. Конкретно в тредах делигат видимо используется для того чтобы передать сигнатуру метода.
@user-lv1le3oq6c
@user-lv1le3oq6c 9 ай бұрын
здравствуйте, можте снять создание телеграмм бота, только вместо async/await использовать Thread?
@user-mn2po8ns2z
@user-mn2po8ns2z 3 жыл бұрын
Спасибо
@arthurmelitena5837
@arthurmelitena5837 4 жыл бұрын
Орнул на делегатах :D Будут еще видео? Было бы супер про wpf послушать от тебя и про патерны.
@XpucT
@XpucT 4 жыл бұрын
Весьма вероятно 👍
@magnumataredfox
@magnumataredfox 3 жыл бұрын
Неплохое видео, хоть я уже и опытный разработчик, что-то для себя все-равно подчерпнул, однако не раскрыта суть как Action позволяет менять контрол, и в чем разница между вызовом через лямбду, action и MethodInvoker
@Colibri_Rent
@Colibri_Rent 4 жыл бұрын
Спасибо огромное за урок, очень классное объяснение. Насчёт написания кода, как по мне, то в строчку лучше, и понятнее. Ещё вопрос, есть ли урок работе с процессами, и сетевое программирование ?
@XpucT
@XpucT 4 жыл бұрын
Будет позже 🤝
@AndroidsReview
@AndroidsReview 4 жыл бұрын
Обожаю c#, пользуюсь 2008 студией, потому что не люблю выкачивать тонны гигабайт и люблю легкие ide, уже тогда было столько фичей в нем. Тогда наверное он казался языком из будущего.
@alexandrsazanov9402
@alexandrsazanov9402 3 жыл бұрын
Делегат это грубоговоря ссылка на метод. Все событийная модель на нем построена.
@user-ql2cz7hy1x
@user-ql2cz7hy1x 4 жыл бұрын
Скажите, для парсинга сайтов (получение страниц и извлечения из них данных) лучше использовать многопоточность или async?
@XpucT
@XpucT 4 жыл бұрын
async сегодня в любом вопросе предпочтительнее.
@user-ql2cz7hy1x
@user-ql2cz7hy1x 4 жыл бұрын
@@XpucT Спасибо!
@alexkot9849
@alexkot9849 11 ай бұрын
Где можно скачать исходники?
@hello_world_zz
@hello_world_zz 3 жыл бұрын
Классно, спасибо. Прикол (я из Израиля): на 4:50 когда говорил про кошерность я как раз собрался есть бутер колбасой и сыром, зашел в оффис верующий друг в ермолке. лол
@abrikos_yadrony
@abrikos_yadrony 3 жыл бұрын
Делегаты нужны для того, чтобы различные функции в качестве аргументов передавать в другие функции, чтобы потом эти переданные в качестве аргументов функции вызывались когда угодно, идеальный пример - конвейер компонентов Middleware для Asp.Net Core. Если ошибаюсь, поправьте
@user-nh1lp8xt4j
@user-nh1lp8xt4j Жыл бұрын
А вот у вас на 14:26 в режиме Release меняется lable а у меня почемуто не меняется и выдает ошибку. System.InvalidOperationException: "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'label1' не из того потока, в котором он был создан." Тоже запускаю в Release. С чем это может быть связано?
@XpucT
@XpucT Жыл бұрын
Решение ➜ Очистить решение. Либо перезапустить проект. Но в Release такого не должно быть. Если ошибка повторяется, начните сначала или создайте чистый проект. Где-то тогда Ваш косяк.
@user-nh1lp8xt4j
@user-nh1lp8xt4j Жыл бұрын
@@XpucT Спасибо за ответ. Извините что заставил обратить на себя внимание. В новом проекте такая же борода. Очистить решение не помогло. У меня vs 22 может быть в ней чтото изменилось. (
@XpucT
@XpucT Жыл бұрын
@@user-nh1lp8xt4j рекомендую 2019.
@abcdef-th6jh
@abcdef-th6jh 3 жыл бұрын
Мне как новичку без бэграунда было сложновато понять, т.к. понимания что такое потоки и как они работает практически нулевые(+впервые знакомлюсь с этим, 15 лет :D), поэтому сюда ещё вернусь(когда получше пойму что это и как это). А так, вроде всё классно(просто я ещё маслёнок). Спасилбо
Houdini Algorithmic Live #108 - Strip Encoding
3:28:55
Junichiro Horikawa
Рет қаралды 242 М.
FOOTBALL WITH PLAY BUTTONS ▶️ #roadto100m
00:29
Celine Dept
Рет қаралды 75 МЛН
Кәріс өшін алды...| Synyptas 3 | 10 серия
24:51
Indian sharing by Secret Vlog #shorts
00:13
Secret Vlog
Рет қаралды 57 МЛН
Шокирующая Речь Выпускника 😳📽️@CarrolltonTexas
00:43
Глеб Рандалайнен
Рет қаралды 10 МЛН
42 приема Midjourney V6 | Большой гайд 2024
16:46
ITSCOOL | Школа новых пайплайнов в CG
Рет қаралды 10 М.
C# Delegates Делегаты
18:14
codaza
Рет қаралды 81 М.
Thread → Task. Многопоточность и Асинхронность
13:39
Архитектор ПО. Александр Желнин
Рет қаралды 26 М.
ЧТО ТАКОЕ ПОТОК? [МЬЮТЕКС, СЕМАФОР]
20:46
АйтишныйДомосед
Рет қаралды 24 М.
C# Events События
14:36
codaza
Рет қаралды 48 М.
The power button can never be pressed!!
0:57
Maker Y
Рет қаралды 55 МЛН
iPhone 15 Pro vs Samsung s24🤣 #shorts
0:10
Tech Tonics
Рет қаралды 10 МЛН
С Какой Высоты Разобьётся NOKIA3310 ?!😳
0:43
Apple, как вас уделал Тюменский бренд CaseGuru? Конец удивил #caseguru #кейсгуру #наушники
0:54
CaseGuru / Наушники / Пылесосы / Смарт-часы /
Рет қаралды 4,6 МЛН