если инициализируете соурсы токены в цикле каком нибудь - не забывайте их обернуть в юзинги, а то словите утечку памяти)
@johnrollan22563 жыл бұрын
они оба(CancellationTokenSource и CancellationToken ) создают утечку памяти или один из них? спасибо
@KokemomoPaiChan3 жыл бұрын
@@johnrollan2256 CancellationTokenSource
@kastyel19902 жыл бұрын
Вопоос, а на что влияет утечка памяти? Ибо обьяснений много, или я тугой, но не до конца понимаю.
@m1xaedzy2 жыл бұрын
@@kastyel1990 приложение пожирает слишком много отделенной ей памяти, и если нет настроек в докере/кубере, то приложение просто перестанет выполнять что либо из за outOfmemory exception, и множества других ошибок. В кубере вроде по дефолту будет рестарт преложения ( тобишь твое приложение будет недоступно на протяжение пару минут), когда я работал около биг даты - это было чревато очередью в несколько миллионов необработанных сообщений ( из за чего юзеры получали обновления слишком долго) , так же увеличится время выполнения операций и тому подобное
@m1xaedzy2 жыл бұрын
@@kastyel1990 да и представь, что будет с твоим компьютером, если у тебя 4гб озы, а приложение начнет жрать и упираться в потолок ресурсов компьютера ( это синие экраны, дикие лаги)
@vadymkon Жыл бұрын
ЫЫЫ, так порадовало когда ты бул показал, ведь когда-то на плюсах я сам до этого додумался. Прикольно и приятно :) +: Фразу "потому что канселейшн-токен послал отмену" можно вроде вообще мемом сделать
@zohirsattorov25213 жыл бұрын
Салам! Спасибо Бро! Безконечный Респект! Твои уроки оочень полезные и ты хорошо объесняешь! Из твоих уроков я многого научился и делаю качественные проекты! Ты лучший! Не слушай других, продолжай!
@walerij3 жыл бұрын
Хачатур, да тому, что люди пытаются придраться к твоему коду, есть простое объяснение. Мне кажется, что те люди, не новички, а имеющие хоть какой-то опыт, но видя с тебе профессионала, пытаются как бы себе самим доказать, что мол я не хуже этого профи Хачатура. Представляешь, как приятно, когда ты смог поправить самого гуру какого-нибудь. Совсем новички (я в их числе) просто восхищаются и хотят так же. Середнячки действуют, как я описал выше. Это не потому, что они хотят именно тебя оскорбить или задеть, а потому, что хотят доказать сами себе что-либо. И это в принципе нормально: хотеть быть лучше, чем учитель. Ну а совсем боги опытные, они уже все эти стадии прошли, и им не нужно ничего никому доказывать.
@СергейЦыганков-ф8ц3 жыл бұрын
Спасибо за новые возможности сам программирую уже 10лет а о многом даже и незнал
@НаташаИбраева-о5з2 жыл бұрын
Хачатур, я только недавно нашла Ваш канал, но у Вас узнала намного больше, гораздо подробнее, намного понятнее чем на курсах Skillbox. Спасибо за ваши видео, баньте всех завистников. Они бы лучше свои программы писали хорошо, чем пытались задеть Вас. Уверена у большинства из них нет ни одного годного продукта. Так что продолжайте развиваться, а там может и мы начинающие чему-нибудь у вас научимся.👍
@XpucT2 жыл бұрын
Спасибо, Наташ
@leonruscraft2 жыл бұрын
Самое лучшее объяснение CancellationToken🤘
@davidmazayan76683 жыл бұрын
Продолжай так как ты думаешь. Ты идеально объясняешь на живых примерах. Благодаря твоих видео реально я создал очень большой CRM систему. Реально работает СПАСИБО Привет из АРМЕНИИ ))
@aquarium893 жыл бұрын
Вспомнился случай... Пошел я однажды давно на небезызвестный кибер-форум, что-то там узнать, ну и к вопросу приложил часть своего кода, по которому был вопрос. Так вот местные там мсье, сказали что-то типа "писать сначала научитесь, а потом вопросы задавайте") И начали тыкать в такие места кода, типа вот тут переменную нельзя такую использовать, а вот это надо с большой буквы писать, а там вообще строки местами поменять надо... И вот как-то даже обидно стало, ведь код то был рабочий, и личный взгляд тогдашнего меня, вполне себе читабельный, а главное, что вопрос вообще не относился к этим самым "косякам". Наверное с тех пор, показывая свою писанину, заранее прошу за нее прощения, если вдруг кого-то чем-то зацепит😁 Понятное дело что есть какие-то общепринятые нормы и приавила, но, во-первых, подчерк у всех разный, а во-вторых, не надо кидаться на новичков в особенности за какие-то недочеты, лучше подскажите и поправьте, а если не можете сделать это корректно, то будьте еще умнее и промолчите...
@infinitynoir54413 жыл бұрын
Ру комьюнити в программировании вообще само по себе кусок токсичного дерьма. Да, даже если на стеке расписывают все подробно (что иногда может пригодиться), то все равно там человеческое отношение совершенно другое
@JenyaHW3 жыл бұрын
Отличный урок! Спасибо.
@yankweh23873 жыл бұрын
Круто, как всегда!
@BoddenDeni2 жыл бұрын
Давай еще видео. Все очень просто и понятно. СПасибо.
@paxvostrum48243 жыл бұрын
Именно такой стиль преподавания лучше всего заходит, привет твоему коту!
@XpucT3 жыл бұрын
@7.8.12-s3m3 жыл бұрын
друган спасибо за труды ты всё делаеш привильно .... дай БОГ тебе здаровья
@denisk74543 жыл бұрын
Хачатур, привет. Смотрю твои видосы буквально недавно, и хочу сказать спасибо за твой труд, за то что тебе это нравится, за то что ты такой какой есть, за твою уникальную подачу материала! )) Не знаю, в чём то узнаю реверсеров из олдов)) По поводу мессий из комментов - ваще забей! Кому чо не нравится, пусть не смотрят и идут лесом, а я смотрел, и буду смотреть твои видосы, снимай исчо!
@Denitka Жыл бұрын
Да ёпрст, супер видосы, вот, прям, огонь!
@ewgenbi3 жыл бұрын
Спасибо. Всё правильно делаешь.
@user-wu-tang Жыл бұрын
Привет ув. Хачатур Респект за то, что повысил еще на 7%
@XpucT Жыл бұрын
😇 🙏
@Sharpei142 жыл бұрын
Здравствуй!Благодарствую!)
@XpucT2 жыл бұрын
@Sharpei142 жыл бұрын
@@XpucT Я бы стал спонсором канала, но кнопки нет((. Нужна альтернатива)). Ну прям очень-очень хочется!
@tavvi45693 жыл бұрын
Коме интересно почему на 7:00 выдало ошибку. Дело в том что асинхронные методы по идеи должны возвращать типы Task и Task, но еще добавили поддержку возвращаемого типа void, чтобы события могли вызывать асинхронные методы. Поэтому в этом случае нельзя менять void на Task так как сигнатура метода Button1_Click не соответствует сигнатуре события button.OnClick.
@elena_khizhnyak3 жыл бұрын
Спасибо Вам огромное за полезный материал! Обожаю Ваши уроки! ✊🥰 А на душнил забейте, такие всегда будут выделываться в комментариях.
@cate-g7e Жыл бұрын
6:05 а можно ссылку на этот канал?
@aquarium893 жыл бұрын
06:06 😁👍
@vladfoton3 жыл бұрын
Молодец, продолжай !!! на хейт не обращай внимание...
@blackdream93723 жыл бұрын
Привет, Христ! Можешь подсказать почему когда я запускаю очистку в Win 10 Tweaker у меня зависает на пункте "Очистка кэша обновление Windws". Возможно это тебе поможет , но когда я запускаю Win 10 Tweaker на Windwows SandBox и захожу в системную информацию там вылазит ошибка: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parametr name: index
@XpucT3 жыл бұрын
Привет 🖐 Перейди на beta: Win 10 Tweaker ➜ О программе ➜ Перейти на beta 👍
@kastyel19902 жыл бұрын
Да и еще вопрос... Сделал информативную формочку с данными, которая генерирует поля на основании sql процедурки. Теперь клиент просит ее выводить на печать. Я начал костылить это через report viewer, но может есть более простые способы?
@XpucT2 жыл бұрын
В сети полно библиотек для работы с печатью любых данных. Вот что точно не стал бы с нуля писать. Особенно, если нужно какому-то клиенту.
@kastyel19902 жыл бұрын
@@XpucT Спасибо. Еще покопаюсь, ибо пока нашел только отчеты. Но раз ты говоришь, значит я не верно ставлю вопрос поисковику.)
@Anton-Os3 жыл бұрын
Спасибо!
@joddergmd13913 жыл бұрын
Посмотрел 2 раза, но всё равно немного не понял. Токен нужен для того чтобы останавливать именно этот await, и чтобы он не оставался в памяти и не крутил ничего не делающие циклы? И ещё, потом мы засунули его в if, как булл переменную, и если у нас есть запрос на остановку то он как бы брейкает весь метод. Но если сделать такой же бул need как и в начале, и засунуть его не в while а в if (как сделали с токеном) то он будет так же работать как и токен? Ну а то что мы засунули st через запятую прямо к Task.Run я вообще не понял как работает... Объясните плз :)
@XpucT3 жыл бұрын
Всё правильно. Ты вероятно просто ещё не делал столько вызовов сложных, где многим нужно получить токен отмены. Я поэтому и не стал городить, ибо это придёт со временем. Главное, чтобы Ты знал, когда начнёшь работать с https или чем-то ***Asynk, можно тушить всё через токены, а не просто рубить с плеча, грубо прекращая какой-то цикл. В большинстве случаев bool достаточно, но важно отметить, что есть и система токенов на отмену операции, если определённый метод это умеет.
@joddergmd13913 жыл бұрын
@@XpucT Спасибо за ответ и видео!
@7.8.12-s3m3 жыл бұрын
@@XpucT спасибо большое тебе друган
@kastyel19902 жыл бұрын
Здравствуй Хачатур. А подскажи такую штуку. Я все еще пишу бота и возник вопрос по теме. Для сохранения настроек пользователя, пишу их в файл в потоке с некой задержкой. Можно ли в этой задаче проверять наличие основного процесса программы, для завершения фонового процесса обновления файла? Я это делал, ибо пока не придумал хорошего решения по отлову закрытия моего консольного приложения.
@XpucT2 жыл бұрын
Привет 🖐 Я лично так и делаю с ботом. Тушу его и продолжаю работу, т.к. консоль не закрывается, всё работает дальше, как часы, как будто ничего не было.
@KokemomoPaiChan3 жыл бұрын
Спасибо)
@mikhailskylark84172 жыл бұрын
Привет! Слушай, а есть ли замена Thread.Abort() на новом дотнете? Начиная с версии дотнет 5 и выше, эту функцию вырезали и не предоставили ничего взамен, интернет уже весь просмотрел, всё что предлагают - проверять какой-нибудь bool на какой-то строчке кода, но это полный отстой по сравнению с предыдущим Thread.Abort(), который сам мог отменить поток на любой строчке кода вне зависимости от типа задачи. Единственную замену, которую я нашёл - это Task.Interrupt() и потом естественно Dispose(), но проблема в том, что метод Interrupt работает только тогда, когда таск спит, либо есть делэй, то есть ты пошлёшь таску интеррапт, а он остановится только тогда, когда дойдёт до строчки Thread.Sleep() внутри таска или ей подобной строки, а ведь такой строки вовсе может и не быть, да и хотелось нормального функционала отмены потока / задачи, когда как только пошлёшь ему Thread.Abort(), он сразу же прервётся.
@XpucT2 жыл бұрын
Привет 🖐 Давно уже с Thread, потому что сейчас все вопросы решаются Task`ом. Поверь, лучше уже сейчас всё начать переписывать, потому что потом будет тяжелее.
@mikhailskylark84172 жыл бұрын
@@XpucT да могу и на таск всё перегнать конечно, но говорю, вот в таске только единственный вариант нашёл - Task.Interrupt(), но он сработает только тогда, когда этот таск дойдёт до строчки Thread.Sleep(), а на всех остальных команда интеррапт не понесёт эффекта. Вот интересуюсь, может Вы знаете способ работающей принудительной остановки таска вне зависимости от выполняемой этим таском команды?
@XpucT2 жыл бұрын
@@mikhailskylark8417 Я к тому и говорю, что даже Thread.Sleep() нужно сразу менять на await Task.Delay(); А чтобы грубо не прерывать, но при это очень хочется, то есть while (bool). И нет, это не костыль. Это нормально.
@mikhailskylark84172 жыл бұрын
@@XpucT копец)) ну ладно, спасибо за информацию! Я уже столько костылей понаделывал, что диплом медицинского вуза уже должны были дать
@XpucT2 жыл бұрын
@@mikhailskylark8417
@puser-yh9lv7kl1h3 жыл бұрын
Хачатур, почему в первом примере у меня ошибка System.InvalidOperationException: "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'label1' не из того потока, в котором он был создан." Код из видео async void button1_Click(object sender, EventArgs e) { await Task.Run(async () => { while (true) { label1.Text += "1"; await Task.Delay(1000); } }); }
@puser-yh9lv7kl1h3 жыл бұрын
Почему твой код выполняется, а мой нет?
@puser-yh9lv7kl1h3 жыл бұрын
т.е. у тебя выполняется а у меня нет
@serpotapov3 жыл бұрын
Привет, Юра 🖐 Это всё потому что Ты сидишь в Debug. Подробнее об этой ошибке Хачатур рассказывал в уроке про Потоки. vk.cc/akdhHs
@johnrollan22563 жыл бұрын
@@serpotapov у меня такая же ошибка, рилиз мод решает. Но из видео(kzbin.info/www/bejne/qGa0lWB7fpKjoLc) я не понял причину именно зачем не работал в дебаг моде? можете обяснить?
@userwholovesmeowing3 жыл бұрын
@@puser-yh9lv7kl1h наконец то нашел ответ, Визуал студио ищет ошибку между тредами, когда включего дебаг мод, нам надо отключить эту поиск ошибок между тредами - Control.CheckForIllegalCrossThreadCalls = false;
@unique48833 жыл бұрын
CancellationToken, мьютекс семафор нормальная тема, если у вас больше пяти потоков.
@АлександрКонев-й9п3 жыл бұрын
Дурной тон это как я как раз в защиту Тапла сказал супротив параметров с out предлагаемых в комментарии.
@Richard-Gir3 жыл бұрын
Какой, нафиг, Тапл? Тюпл - правильно Хачатур произносит. Tuple, duplex, etc. Apple - эпл, так специально тут две "p" стоят, иначе бы эйпл читалось.
@АлександрКонев-й9п3 жыл бұрын
@@Richard-Gir m.kzbin.info/www/bejne/roiqlIiYecp1o68 не стоит вам заниматься английским
@Richard-Gir3 жыл бұрын
@@АлександрКонев-й9п Я им и не занимаюсь, просто знаю, что правильно "тюпл". "Тапл" - это, видимо, какая-то современная интерпретация, как кофе среднего рода. Кстати, в комментариях к вашему видео как раз люди пишут, что в англиях и америках люди тюпл говорят. Яндекс-переводчик дает "тюпл", гугель - "тапл".
@gonpachiro2225 Жыл бұрын
Спасибо за урок) Честно говоря про токен так и не понял, это просто дополнительный if в коде, по сути ведь это тот же бул, просто больше засоряет код и портит немного оптимизацию) Просто сам недавно его пытался использовать, но прикола так и не понял)
@AndriySylyvonyuk3 жыл бұрын
Круто. Сделай видео урок по конечных автоматах на шарпе. Если используешь в своих проектах
@mikhailskylark84172 жыл бұрын
У меня есть new Thread.Start(), и после нажатия на кнопку, надо завершить этот поток. Метод Thread.Abort() не подходит, т.к. я не могу обратиться к нему по имени, я его создавал через new. Вопрос: как остановить поток по нажатию кнопки? Сам пока что накостылял внутри new Thread асинк функцию которая каждую секунду проверяет bool и специально ловит ошибку в try catch коде, чтобы остановить поток (дада, такой бред)
@XpucT2 жыл бұрын
Если код работает, то это не бред. Но лучше всё же переписать всё под чистый Task.
@evgenyif52872 жыл бұрын
Не ожидал, что вы ответите, а этот вариант я уже применил, спасибо вам! теперь выскакивает ошибка {"Cannot access a disposed object. Object name: 'Form1'."}. Но это уже другая история)
@damascake3 жыл бұрын
Этот комплекс называется - перфекционизм.
@phat803 жыл бұрын
Иногда это называется долбо…зм. Например, человек пишет простейшее приложение, а ему предлагают применить там все возможные паттерны ООП, а иначе типа «зачем тебе понадобился ООЯП?». Иной раз что-то простое можно быстрее написать тупо в процедурном стиле и не морочить никому голову, особенно когда ты знаешь, что это приложение никогда не станет аналогом офиса или фотошопа, да и вообще у него будет одна единственная версия, первая и последняя, которая будет работать. Но нет, есть умники, которые тебя будут тыкать, что как это так, не проработал архитектуру приложения. Хотят чтобы ты потратил не 4-5 часов на написание программулины, а 4-5 дней минимум.
@7.8.12-s3m3 жыл бұрын
я так понял из видоса есть два варианта ...1 если вас послали и вы нах свалили .... 2 вас послали и вы культурно попрощялись и вышли )))) токинь мокинь )))) для меня эт как в лес за дровами с пилкой от лобзика ))))
@Glavniyfilm2 жыл бұрын
а если нужно повторно запустить по клику поток ?
@XpucT2 жыл бұрын
if (нужно повторно...)
@Glavniyfilm2 жыл бұрын
@@XpucT ну я серьёзно сегодня целый день ковыряюсь и гугл отвечать не хочет. По одной кнопке запускаю поток по другой останавливают и потом по первой опять но тишина... он умер
@ВладимирРолдугин-й2й3 жыл бұрын
Слушай всегда пишу после твоих видео сам код для запоминания, и мне выдает ошибку : System.InvalidOperationException: "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'label1' не из того потока, в котором он был создан."
While true.. а true у нас всегда - больше всего угараю с таких мини-замечаний. Юмор решает, когда выбираешь по чьим урокам учиться Хачатур, скажи, пожалуйста, что думаешь про Rust (для тех, кому пожестче)
@XpucT3 жыл бұрын
Вообще не знакомился с Rust, но слышать стал часто.
@phat803 жыл бұрын
Rust - идеален для каких-то системных утилит без UI или для каких-то web сервисов. То есть специфика не совсем та. Делать на нем какое-то приложение с интерфейсом такое себе. Там есть какая-то связка с GTK, конечно. Но все это пока не очень готово для создания каких-то приложений заточенных под UI. Хороших родных библиотек пока нет вообще вроде. То есть это вообще отдельная история и с тем же C# никак не коррелирует. Ну только если в плане написания бэкенда и микросервисов. Про Rust уместно задавать вопросы тем, кто пишет на C или C++. Они, если не хотят отстать от жизни, должны уже так или иначе присматриваться к Rust’у.
@gesriot3 жыл бұрын
@@phat80 Ну, я как бы ничего не говорил про специфику или корреляции с C#. Ну, раз на то пошло, выскажу и свое ИМХО) Пройдет еще год-два и он будет просто идеален. Новые GUIшные либы появляются чуть ли не каждый месяц. Большинство из них сырые. Но есть вполне сносные, например, Druid. Если нужно еще красивее, то лучший варик на данный момент - привязки к FLTK kzbin.info/www/bejne/mpSsZX2Vl89rp8U. Конечно, до WPF пока далеко. Да и походу это что-то типа мирового тренда.. десктопных приложух пишут все меньше и меньше.. и на это место, к сожалению, приходит Electron. Те, кто давно пишет на C/C++ чаще всего ненавидят Rust (он же "убийца"). Мне кажется, дольше всего плюсы продержатся в геймдеве. О каком-то противостоянии C# vs Rust говорить не приходится. Понятно, что Rust'а не будет много хотя бы из-за высокого порога входа. У C# главные соперники - Python и Go. Python станет как англ. язык для всех кодеров, ибо лучшего инструмента для прототипирования не сыскать. А с Go придется мириться, как миримся с JS. Поэтому чтобы Go окончательно не захватил мир, надо продвигать .NET всеми возможными способами)) Как насчет F#, например..
@phat803 жыл бұрын
@@gesriot Хайп вокруг Electron’а вроде уже давно стих. Какую-то нишу он занял, но я не могу сказать, что большую. Сейчас модно на Flutter’е (Dart) ваять приложения, хотя для десктопа и нет продакшн реди версии. Но лично мне не заходят ни electron, ни flutter.
@gesriot3 жыл бұрын
@@phat80 Хайп-то может и стих.. но нас ждет еще одна гидра в лице React Native. А Flutter для андроида хорош вроде. Быстрее бы микрософт уже унифицировал свой MAUI..
@Neo_for_my_chanel47827 ай бұрын
Не работает Пмшет что попытка доступа из другого потока
@vasyanpro4567345 Жыл бұрын
Ппц каждый раз проверять токен, а как не проверять и прервать задачу?
@duoangels87063 жыл бұрын
👋👍
@uknownperson71123 жыл бұрын
Интересная тема. Спасибо
@3x__3 жыл бұрын
потому что👍)))
@stivendiplet80833 жыл бұрын
лайк.
@hmixa Жыл бұрын
Зачем всё-таки двухуровневая архитектура? Source он как бы лишний. Можно было бы создать инстанс токена через оператор new и раздать его всем? Не поделитесь своими догадками, зачем Microsoft так сделали?
@UFO262 жыл бұрын
Это колдовство вне Хогвартса. Я такое не запомню)
@XpucT2 жыл бұрын
Депримо! 🪄
@ivannarykin Жыл бұрын
Спасибо! Не обращай внимания на "умников", для нормальных людей с ними всё понятно...
@AlexanderXarawg11 ай бұрын
зашёл из инета послушать про отменяющий токен. В итоге больше половины видео про какие-то срачи в комунити.