It is said that picture is worth a thousand words, and I agree. That’s why I like preparing technical drawings to explain various concepts. So, here it is – a short story of how async/await works in .NET.
There are lot of tips which I would like to share but I will present only a small portion of the key takeyways which subjetively seemed most intersting for me. Don’t hate me for my somewhat short explanation of topics here, the main purpose of the post is to aggregate the bullet points from conference and reference the most interesting stuff 🙂Source: https://twitter.com/developerdayspl DAY 1 The Intelligent Cloud and Intelligent Edge Cotin -role of ...
Generalized async return types — it is a new C#7 feature that allows using not only Task as a return type of async methods but also other types (classes or structures) that satisfy some specific requirements. At the same time, async/await is a way to call a set of "continuation" functions inside some context which is an essence of another design pattern — Monad. So,...
Sztuka programowania 1942 dni, 3 godziny, 50 minut temu 182 źrodło rozwiń
Async-await to nie tylko rewolucja jeśli chodzi o IO czy wykonanie długich operacji. To także niesamowite możliwości jeśli chodzi o kontrolę przepływu w Twoim kodzie. Jak to zrobić? Zapraszam do artykułu
Sztuka programowania 1991 dni, 4 godziny, 19 minut temu 241 źrodło rozwiń
Dziś odpowiedź na zdecydowanie najczęściej zadawane pytanie w kontekście naszego projektu DShop. Brzmi ono „w jaki sposób użytkownik końcowy aplikacji wie czy jego komenda została (i kiedy została) przetworzona?”. Na pierwszy rzut oka odpowiedź na to pytanie może wydawać się trywialna, prawda? Wszak większość typowych aplikacji webowych po wykonaniu jakiejś akcji informuje nas o jej powodzeniu lub błędzie poprzez np. toastry...
Programowanie rozproszone 2059 dni, 3 godziny, 56 minut temu 329 źrodło rozwiń
C# and .NET przeszły ostatnio przez dużo zmian. Taski, async-await, ValueTask i ostatni IValueTaskSource - spójrzmy razem na historię asynchroniczności w C# oraz na to, co możemy zrobić .NET Core 2.1
Sztuka programowania 2373 dni, 4 godziny, 20 minut temu 265 źrodło rozwiń
W poprzednim wpisie pokazałem, jak użyć Fluent Validation w aplikacji WPF. Wspomniałem, że tamta implementacja niestety nie nadaje się, gdy potrzebujemy walidować dane w sposób asynchroniczny – np. sprawdzić w usłudze, czy dane są unikalne. W tamtym wpisie pokazałem użycie IDataErrorInfo ponieważ jest on najczęściej wykorzystywany do realizacji walidacji. Natomiast dzisiaj opiszę nową wersję tego interfejsu, dodaną w .NET 4.5 – INotifyDataErrorInfo. Co fajne nowy interfejs...
Każdy z programistów, który choć raz miał do czynienia z wielowątkowością, chociaż raz musiał użyć konstrukcjo lock(). Dlaczego nie wolno tego używać razem z async/await? I co użyć zamiast tego? O tym w dzisiejszym wpisie.
Sztuka programowania 2623 dni, 6 godzin, 1 minutę temu 313 źrodło rozwiń
Model async-await stał się już na tyle popularny, że zna go każdy developer. Co jednak, kiedy mamy przypadek, w którym kontynuację wykonania powinniśmy wykonać teraz albo nigdy. Czy możemy w jakiś sposób stworzyć lepsze rozwiązanie, które dalej będzie wspierało magię kompilatora schowaną za async-await? Zapraszam do lektury
Architektura 2709 dni, 16 godzin, 16 minut temu 202 źrodło rozwiń
Saga ma wiele nazw. Znana jest również jako process manager lub orkiestracja. O ile samodzielne wywołania serwisów nie są problemem, o tyle poprawne i sprawne zaimplementowanie operacji Delay, tak aby przetrwała restarty procesu i poprawnie obsłużyła upływający czas nie jest takie proste. Zachęcam do lektury i spojrzenia na opóźnienia pod nieco innym kątem.
Architektura 2715 dni, 13 godzin, 49 minut temu 52 źrodło rozwiń
A więc chcesz zamówić hotel i lot na wycieczkę. Wszystko odwleczone o jeden dzień (bo skoro można, to czemu nie zacząć jutro)? Jak opisać to w kodzie? W jaki sposób wyrazić połączenie tych wielu usług? Jak prosto, wykorzystując obecne w C# twory, ubrać to w zwięzły kawałek kodu.
Architektura 2720 dni, 14 godzin, 10 minut temu 80 źrodło rozwiń
The syntactic sugar is a helpful feature of C# language. We can use using(var tmp = new ...()) {} instead of Dispose(), we have common foreach instead of while loop with iterating enumerator, and we have await and async. But think a while… do we really need await word?
Daj się poznać 2017 2801 dni, 16 godzin temu 123 źrodło rozwiń
This post from Report from the battlefield series will be about my own mistake. It is related to async/await and MARS i.e. Multiple Active Result Sets. async/await allows us to use asynchronous programming more easily. MARS is a feature of MSSQL that allows us to have more than one pending request opened per connection at the same time...
Sztuka programowania 2807 dni, 2 godziny, 57 minut temu 46 źrodło rozwiń
Nowadays, asynchronous programming isn’t something unusual. We all know that when it comes to do some I/O operations or HTTP request, we should do it async. Why? There’re several reasons but two most important are:Efficiency. In many cases, the code might work faster. That’s because it’s not forced to wait for the result. Instead, it can work on some other stuff and then come back for the response when it’s ready. Simple is that.Comfort. Async improves the comfort of using our applications. We don’t blo...
Sztuka programowania 2862 dni, 18 godzin, 15 minut temu 334 źrodło rozwiń
It’s been a few months already since I’ve started working for good with distributed systems using (micro)services and asynchronous processing via service bus. Many issues and question raised and one of these was how to not lose the information about commands and events being processed and even more importantly, how to notify the user once the request has completed? I’ve had to come up with some solution that seems to be sufficient (at least for now) and I’d like to share it with you.
Architektura 2863 dni, 22 godziny, 28 minut temu 146 źrodło rozwiń
It’s been a while since I wrote a JavaScript article, so here it is! Today we are going to reveal one of the biggest front-end mystery. How does async work in JavaScript? The question might seem quite obvious, but believe me that many developers think that it’s because of multi-threading. Well, here is the thing. Async does not require more than one thread. If you don’t believe me click here to confirm that. Ok, fine, let’s say that we need multi-threading to do async. But here comes the thing that confu...
Przygody z deadlockiem (czy jak kto woli – zakleszczeniem) w bibliotece ClrMd ciąg dalszy. W poprzedniej części obszedłem problem po stronie aplikacji, jednak chciałbym przyczynić się do poprawy życia ludzkości i naprawić ten problem w samej bibliotece. Widzę tu trzy wyjścia.
Daj się poznać 2016 3115 dni, 2 godziny, 14 minut temu 28 źrodło rozwiń
W poprzednim poście posłużyłem się następującym kodem, mającym wczytać plik ze zrzutem pamięci i następnie załadować odpowiednią wersję pliku mscordacwks.dll. Niestety, jak już wspomniałem, ten kod umieszczony w aplikacji WPF powoduje jej zawieszenie - na wywołaniu CreateRuntime() interfejs przestaje odpowiadać i możemy czekać tak w nieskończoność.
Daj się poznać 2016 3118 dni, 21 godzin, 1 minutę temu 44 źrodło rozwiń
Tym razem zaczyna się od kodu i od razu dowiemy się dlaczego jest on niebezpieczny...
Programowanie rozproszone 3268 dni, 3 godziny, 13 minut temu 243 źrodło rozwiń
Zupełnie niedawno miałem okazję napisać dla jednego z moich klientów aplikację, która ze względu na potrzebę wykonania gigantycznej ilości zadań w możliwie jak najkrótszym odcinku czasu musiała korzystać z dostępnych w .NET mechanizmów przetwarzania równoległego. Postanowiłem do tego celu wykorzystać Task Parallel Library (w skrócie TPL), od niedawna oferowany dla programistów tej platformy. Mając w przeszłości spore doświadczenia z wykorzystaniem puli wątków uznałem, że ...
Sztuka programowania 3269 dni, 2 godziny, 53 minuty temu 360 źrodło rozwiń