Metody asynchroniczne w .NET - założenia, podstawy, wykorzystanie

Frontend - HTML, CSS, JS
metody asynchroniczne pociag net

Zrównoleglenie pewnych operacji może służyć optymalizacji pod kątem czasu działania metod aplikacji. Najczęściej konstrukcje asynchroniczne stosowane są do równoległego pobierania danych z niezależnych źródeł.

Kolejne wydania .NET oferowały różne pomysły na współbieżność. Chyba żaden element tej biblioteki nie jest tak często i definitywnie zmieniany.

W .NET 1.0:

  • dostępna była klasa “Thread”
  • nie  można przekazać argumentu do wątku
  • na przykład:
    var th = new Thread();

W .NET 2.0:

  • klasa “Thread” umożliwiła argumentację
  • na przykład:
    var th = new Thread(ExecuteInForeground);

W .NET 4.0:

  • wprowadzenie Task Parallel Library (TPL)
  • wszystkie obliczenia równoległe traktowane jako zadania, które można ze sobą odpowiednio synchronizować
  • pojawiły się “Taski”

W .NET 4.5:

  • wprowadzono słowa kluczowe async i await
  • obsługa metod asynchronicznych praktycznie nie różni się od kodu synchronicznego
  • metoda asynchroniczna oznaczona słowem “async” nie tworzy nowego wątku
  • operacje wykonywane są nadal na głównym wątku, jednak w przypadku rozpoczęcia nowego, czasochłonnego zadania (await), metoda async nie blokuje już głównego
  • nie ma w nim metod callback
  • Task jest typem danych zwracanych przez metodę asynchroniczną. Typ Task<TResult> informuje kompilator o danych zwracanych asynchronicznie
  • nie ma w metod callback
  • na przykład:
    
    public async Task<int> 
    GetSomeLengthAsync()
    {
        SomeClass someClass = new SomeClass();
    
        //poniże wywołanie metody asnychronicznej Task<string> 
    
        taskResult = someClass.GetStringAsync();
    
        //metoda DoSth() wykona się nie czekając na powyższą metodę DoSth(); 
        //przypisanie someContent nastąpi dopiero po wykonaniu GetStringAsync() 
    
        Task<string> someContent = await taskResult;
        return someContent.Length; 
    }
    
    private void DoSth() 
    {
        Console.WriteLine("Doing something");
    }

Źródła: http://patryknet.blogspot.com/2012/11/await-asynch-konwencje-i-fakty.html https://msdn.microsoft.com/pl-pl/library/programowanie-asynchroniczne-w-net-4-5.aspx http://kurs.aspnetmvc.pl/MVC/Async_task_await

Tomasz Osiński Tomasz Osiński
Metody asynchroniczne w .NET - założenia, podstawy, wykorzystanie
2017-09-21 21:29:55
Komentarze
Aby dodac komentarz musisz być zalogowany

Zobacz podobne artykuły

Nazywam się Tomasz Osiński. Jestem programistą web developerem od 2008 roku. Obecnie pracuję w Banku Millennium jak .NET web developer, poza tym rozwijam startupy, blogguję. Pokazuję, że za pomocą ASP.NET, HTML, CSS i JS można budować wydajne aplikacje i strony internetowe. Ukazuję potrzeby wdrażania nowoczesnego podejścia do zarządzania w IT (Lean, Kanban, SCRUM, Agile)

Blog, który czytasz tworzę w w/w technologiach i udostępniam na GitHubie