C# .NET Kurs: Programowanie asynchroniczne (async / await )

  Рет қаралды 14,227

Fullstack Developer

Fullstack Developer

Күн бұрын

Aktualne kupony rabatowe:
fullstackdeveloper.tech/kursy
W tym materiale dowiesz się:
czym różni się kod synchroniczny od asynchronicznego
do czego służa słówka kluczowe async i await
poznasz też typ Task i jego generyczne wersje
zobaczysz jak wykonywać wiele zadań równolegle oraz jak wstrzymać wykonianie programu asynchronicznie
a poza tym przeanalizujemy obsługę wyjątków z metod asynchronicznych
Na koniec przygotowałem mały quiz, w którym możesz sprawdzić czy udało Ci się zrozumieć mechanizm asynchronicznego wywołania metod
Zapraszam na serwer Discord:
/ discord
Kod źródłowy:
github.com/jakubkozera/CSharp...
00:00 Wstęp
05:10 async & await
12:50 Generyczny Task
16:13 Równoległe zadania
22:40 Wstrzymywanie wykonania
26:56 Asynchroniczne wyjątki
35:05 Quiz
Fb: / fullstack-developer-10...
#csharp #dotnet #kurs #poradnik

Пікірлер: 45
@FullstackDeveloperPL
@FullstackDeveloperPL 2 жыл бұрын
Aktualne kupony zniżkowe na moje kursy: fullstackdeveloper.tech/kursy Zapraszam na serwer Discord: discord.gg/UDHXQxhM4r
@andrzejas943
@andrzejas943 2 жыл бұрын
Mistrzostwo świata. Dobór przykładów + średnio szybkie jasne tłumaczenie + świetna jakość dźwięku (dobry mikrofon) tworzy materiał doskonały. Na pewno przeglądne Twoje kursy, pozdrówka i subik.
@pabas3792
@pabas3792 2 жыл бұрын
Genialne są te odcinki
@FullstackDeveloperPL
@FullstackDeveloperPL 2 жыл бұрын
dzięki za feedback :p
@TheReMiixHD
@TheReMiixHD 3 жыл бұрын
Świetny odcinek. Pozdrawiam serdecznie!
@user-zr8fh4wy5q
@user-zr8fh4wy5q 2 жыл бұрын
W bardzo przystępny sposób wytłumaczone pojęcie asynchroniczności. Dzięki za ten odcinek!
@krogullec1850
@krogullec1850 3 жыл бұрын
Bardzo ciekawy i przydatny materiał, mam nadzieję że będzie ich więcej :)
@FullstackDeveloperPL
@FullstackDeveloperPL 3 жыл бұрын
dzięki za komentarz, będzie więcej i to nie tylko z backendu ;p
@dywanixproductions
@dywanixproductions 2 жыл бұрын
Dzięki za Twoją pracę - piona!
@smdSeba
@smdSeba 6 ай бұрын
Jesteś mojim góru.
@mikoaj1954
@mikoaj1954 2 жыл бұрын
dzięki za tutorial
@adamsilenko741
@adamsilenko741 Жыл бұрын
Świetny materiał, również by sobie przypomnieć podstawy. Masz idealny głos do narracji. Mam jedną uwagę: w 34:00 zadanie przypisujesz do zmiennej i mówisz że jest wykonywane dopiero kiedy go oczekujemy, wydaje mi się że to nie do końca prawda, co zresztą potwierdza test z 44:55, zadanie jest wykonywane od chwili przypisania go do zmiennej (wywołania metody zwracającej wykonywane zadanie), ale błędy zwracane są w momencie oczekiwania na jego wykonanie (tu jest sprawdzany wynik zadania wykonanego po przypisaniu go do zmiennej).
@nextnext1013
@nextnext1013 3 жыл бұрын
Świetnie się ogląda te twoje materiały! Robiłam z nich nawet powtórkę do obrony pracy inż. (wczoraj obroniłam). Mam przy okazji pytanie, czy planujesz coś o delegatach?
@FullstackDeveloperPL
@FullstackDeveloperPL 3 жыл бұрын
dzięki za komentarz i gratulacje obrony 👏👏 :) o temat delegat zahaczyłem przy okazji typów generycznych, możesz podejrzeć tutaj: kzfaq.info/get/bejne/bNyWdpdy0ralZIE.html
@abachaczi9234
@abachaczi9234 3 жыл бұрын
Super materiał. Są w planie zdarzenia, atrybuty i refleksje? :P
@FullstackDeveloperPL
@FullstackDeveloperPL 3 жыл бұрын
Eventy raczej nie, a refleksja i atrybuty pewnie się prędzej czy później pojawia :p
@csgotradergrucha1680
@csgotradergrucha1680 3 жыл бұрын
Fajny materiał :) Mam jednak pytanie, ,, kod wykonuje się na wielu wątkach jednoczensie,, , w internecie jest sporo artykułów ze programowanie asynchroniczne to nie programowanie wielowątkowe, czy mógłbys to wytłumaczyć prostymi słowami? ( jako początkujący wciaz nie do konca rozumiem jaka jest roznica) myśle, że wiele osób skorzysta na Twojej odpowiedzi :)
@FullstackDeveloperPL
@FullstackDeveloperPL 3 жыл бұрын
Jasne, w programowaniu asynchronicznym głównym celem jest nie blokowanie wątku głównego aplikacji i przy takim podejściu operujemy na Task'ach, które są swego rodzaju abstrakcją wykonania kodu na innym niż głównym wątku - z tym że używając async/await/Task, w żaden sposób sami nie operujemy na wątkach - nie tworzymy ich, nie dbamy o komunikację miedzy wątkami. A z drugiej strony czyli programowanie wielowątkowe, to już jest koncept bardziej niskopoziomowy, gdzie sami 'ręcznie' tworzymy nowe wątki w naszej aplikacji, przekazujemy na nie jakaś prace do wykonania, a następnie musimy zadbać o synchronizację wątków/komunikacje, a po zakończeniu pracy odpowiednio ten wątek zamknąć Czyli w kontekście nie blokowania głównego wątku - programowanie wielowątkowe też możnaby nazwać asynchronicznym - z tym że o wiele bardziej złożonym (i mniej przyjemnym dla programistów ;p)
@66sebolek
@66sebolek 10 ай бұрын
Czy Timey w c# są asynchroniczne? Chodzi mi konkretnie o kontrolki?
@matthewrossee
@matthewrossee 2 жыл бұрын
Jaką mamy pewność, że przy wykonywaniu tasków równolegle, kilka tasków nie będzie nadpisywać wartości totalLength w tym samym momencie? (totalLength += file.Content.Length;)
@FullstackDeveloperPL
@FullstackDeveloperPL 2 жыл бұрын
Jeżeli nie ma założonego locka na ta operacje to teoretycznie jest szansa na taka sytuacje
@praktycznewskazowki6733
@praktycznewskazowki6733 2 жыл бұрын
czy jest jakis fajny sposob jak w metodzie whenAll zagwarantowac kolejność? Potrzebuje wywołać takie coś tylko zależy mi na kolejności... czy musze je potem przesortować wgl jakiegoś klucza czy mogę to zrobić optymalniej ( mam bardzo dużo danych 😣 ) Proszę o poradę
@marcelqdlik9244
@marcelqdlik9244 3 жыл бұрын
Uważaj na tego bota, najlepiej usuń jego komentarz. A i fajnie, że tak systematycznie sie trzymasz :)
@FullstackDeveloperPL
@FullstackDeveloperPL 3 жыл бұрын
Dzięki :) jakaś plaga z tymi botami
@leito877
@leito877 2 жыл бұрын
Cześć, czy w obecnych czasach podczas tworzenia api w .net core całość powinna być już pisana asynchronicznie? Pozdrawiam
@FullstackDeveloperPL
@FullstackDeveloperPL 2 жыл бұрын
Hej, tak wszystko powinno być asynchroniczne
@pienkow
@pienkow Жыл бұрын
Nie bardzo rozumiem, dlaczego w QUIZ #3 wynik wychodzi 1,2,3 a nie 1,3,2? var task jest typu Task i przypisujemy do niego metodę ThrowException(). i ten task dopiero jest wywoływany w try-catchu?
@adamsilenko741
@adamsilenko741 Жыл бұрын
Zadanie jest wykonywane przy wywołaniu metody która je zwraca, a błąd jest zwracany w momencie oczekiwania na wynik (zakończenie) zadania
@bartosz5503
@bartosz5503 3 жыл бұрын
O co mogą zapytać na rozmowie kwalifikacyjnej na stanowisko Junior .Net Developer?
@FullstackDeveloperPL
@FullstackDeveloperPL 3 жыл бұрын
kilka osób pytało mniej więcej o to samo, także pomyślałem, że może nagram o tym video zamiast każdemu z osobna odpisywać, powinno się w krótce pojawić ;p
@bartosz5503
@bartosz5503 3 жыл бұрын
@@FullstackDeveloperPL Super :D
@maciejkozowski3067
@maciejkozowski3067 3 жыл бұрын
Pomysł super, ale żeby był efekt wow to musiałem stworzyć z 1000 plików, bo mój komputer przeprocesował 5 w 3ms...
@bartosz5503
@bartosz5503 3 жыл бұрын
Warto się uczyć Xaml'a?
@FullstackDeveloperPL
@FullstackDeveloperPL 3 жыл бұрын
to zależy czy będziesz chciał tworzyć aplikacje desktopowe w WPF, jeżeli celujesz stricte w programowanie webowe, to nie będzie konieczności nauki Xaml'a
@ajgor64
@ajgor64 2 жыл бұрын
Oglądam i oglądam, i NIBY wszystko jest jasne, ale jak próbuję w praktyce zastosować, zawsze coś jest nie tak. A to nie można wywołać async, a to nie zwraca tego, co trzeba itp I od kilku dni się męczę z jedną rzeczą, na którą nigdzie nie mogę znaleźć odpowiedzi. Jak w Winforms otworzyć jedno okno Form z drugiego asynchronicznie tak, żeby okno dziecko nie blokowało okna rodzica. Czy da się to zrobić używając async/await, czy tylko Background Workerem? Jak wstawiam await na samo wywołanie okna (await Task.Run(() => childForm.Show());) to okno dziecko się otwiera, nie ma błędów i rodzica nie blokuje, ale samo okno dziecko jest zablokowane i nawet się w nim kontrolki nie odrysowują.
@FullstackDeveloperPL
@FullstackDeveloperPL 2 жыл бұрын
ja osobiście nie pisałem w WinForms, także tutaj ciężko mi pomóc
@tomekxxxj3145
@tomekxxxj3145 3 жыл бұрын
,, kod wykonuje sie na wielu watkach jedniczesnie,, - no chyba nie do końca... Asynchronicznosc nie polega na uruchamianiu nowycj wątków, moglbys to rozwinąć?
@FullstackDeveloperPL
@FullstackDeveloperPL 3 жыл бұрын
asynchronicznosc nie polega na uruchamianiu nowym wątków - to się zgadza, a co do " kod wykonuje sie na wielu watkach jedniczesnie", to też się zgadza mimo tego że sami nie tworzymy tych wątków. Korzystając z biblioteki TPL czyli np z metod Task.Start czy Task.Run, to ten kod pod spodem korzysta z ThreadPool'a czyli zasobu który jest przypisany do działającej aplikacji, który w sobie agreguje pule dostępnych wątków. I to własnie na wątkach z tej puli będzie wykonywał się kod asynchroniczny
@tomekxxxj3145
@tomekxxxj3145 3 жыл бұрын
@@FullstackDeveloperPL blog.stephencleary.com/2013/11/there-is-no-thread.html Znalazlem artykuł w którym jeden z MVC microsoftu opowiada o tym, artykuł jednak mówi, ze threadPool nie bierze udziału w operacji asynch...
@FullstackDeveloperPL
@FullstackDeveloperPL 3 жыл бұрын
​@@tomekxxxj3145 w tym artykule Stephen opisuje konkretny przypadek "If the async operation is pure, then there is no thread." Skopiuj i odpal sobie ten kawałek kodu, ale najpierw zastanów się po tym artykule co byś powiedział że się wypisze w konsoli a później go uruchom: class Program { static async Task Main(string[] args) { Console.WriteLine($"{Thread.CurrentThread.ManagedThreadId} {Thread.CurrentThread.IsThreadPoolThread} "); await Foo(); } static async Task Foo() { await Task.Delay(500); //some async code Console.WriteLine($"Foo: {Thread.CurrentThread.ManagedThreadId} {Thread.CurrentThread.IsThreadPoolThread} "); } } A jak już wspomnieliśmy o Stephenie, to jeżeli chcesz wiecej o asynchronicznosci i kodzie wielowątkowym poczytać to polecam jego ksiązke 'Concurrency in C# Cookbook'
@tomekxxxj3145
@tomekxxxj3145 3 жыл бұрын
@@FullstackDeveloperPL a co to wgl znaczy ze jest czysta, jakos z internetowych zrodel nie moge troche zrozumieć, chyba jeszcze nie moj level... Jakos prostymi slowami bys mogl? :) Pzdr
@FullstackDeveloperPL
@FullstackDeveloperPL 3 жыл бұрын
@@tomekxxxj3145 w kontekście tego artykułu to odnosił się on do operacji związanych z wejściem/wyjściem - nie ma tutaj pracy procesora przez co nie ma potrzeby na osobny wątek. Dlatego też kod nie jest blokowany (jest asynchroniczny), a jego wykonywanie zostanie wznowione dopiero po otrzymaniu sygnału zakończenia operacji wejścia/wyjścia
@Bitekpierwszy
@Bitekpierwszy 3 жыл бұрын
@Fullstack Developer - czego używasz do rysowania po ekranie (strzałek i prostokątów? )
@FullstackDeveloperPL
@FullstackDeveloperPL 3 жыл бұрын
Apka o nazwie zoomit
@FIREMAN-ff3cj
@FIREMAN-ff3cj 2 жыл бұрын
Nie ogarniam tego. korzystam z tego w .net bo są dostepne metody kompatybilne z asynchronicznością. Jedyne co tylko robię to dodaje async, await w serwisie i kontrolerze no i Task. Niby async await nie blokuje wątku głównego, a jednak go pałzuje? To nie jest logiczne dla mnie. Nie wiem zawiesiłem się na tym. To jest dla mnie czarna magia jakaś na ten moment.
C# Od podstaw - Klient HTTP
27:26
Fullstack Developer
Рет қаралды 5 М.
What are ASYNC and AWAIT in C#? Asynchronous Programming Tutorial
18:34
Nastya and SeanDoesMagic
00:16
Nastya
Рет қаралды 30 МЛН
Дарю Самокат Скейтеру !
00:42
Vlad Samokatchik
Рет қаралды 8 МЛН
Dlaczego nie znajdziesz pracy w IT
7:04
Fullstack Developer
Рет қаралды 15 М.
Wyrażenia regularne (Regex): czym są i jak pisać własne
27:09
Fullstack Developer
Рет қаралды 7 М.
Writing async/await from scratch in C# with Stephen Toub
1:06:02
Co powinien wiedzieć Junior Developer przed pierwszą pracą?
6:19
Fullstack Developer
Рет қаралды 17 М.
80 Year Olds Share Advice for Younger Self
12:22
Sprouht
Рет қаралды 1,5 МЛН
Refleksja i atrybuty w C# (.NET)
36:26
Fullstack Developer
Рет қаралды 6 М.
Jak działa async i await? [Szybka Lekcja C#]
15:15
Szkoła Programowania COM (Kurs C# .NET)
Рет қаралды 645
Dlaczego nie pracuję już jako programista?
10:48
Jak nauczyć się programowania
Рет қаралды 10 М.
Understand your C# queries! IEnumerable & IQueryable in explained
11:28
tutorialsEU - C#
Рет қаралды 33 М.