Thanks to this class, we can open the window(form) immediately and eg. all data can be loaded in the background. This is usefull becouse basic Windows application runs on a single thread and when we’ve got big list to load on this form. We have to wait until this list and all the others components are loaded then we can display this form.This is sometimes a nuisance....
Daj się poznać 2017 2776 dni, 15 godzin, 24 minuty temu 141 źrodło rozwiń
Wysyłanie maili, aktualizowanie bazy danych, sprawdzaniem spójności danych, aktualizacje wpisów, boty, sztuczny ruch, te inne rzeczy można robić w tle naszej aplikacji, nie mówię że to najlepszy sposób – trzeba uważać na słówka. Jak to robić dobrze? Na pewno nie odpalałbym osobnego wątku z aplikacji. Poszukałem i znalazłem u Hanselmana, mówiłem wam że mam z nim zdjęcie? Na blogu Scota jest taki wpis: http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.asp...
Daj się poznać 2016 3134 dni, 4 godziny, 47 minut temu 150 źrodło rozwiń
Programowanie asynchroniczne ma na celu polepszenie interakcji aplikacji z użytkownikiem. Przenosząc długotrwałe operacje na inny wątek, zapewniamy, że interfejs naszej aplikacji nie zostanie zamrożony.
Na różnych forach często użytkownicy mają problem z aktualizacją kontrolek z innego wątku. Załóżmy, że odpaliliśmy sobie BackgroundWorker lub po prostu Thread. Wykonujemy jakieś operację, np. łączymy się ze zdalnymi zasobami. Stworzenie osobnego wątku w takim scenariuszu jest bardzo pożądane ponieważ nie blokujemy wtedy aktualizacji interfejsu. W trakcie pobierania informacji z Internetu chcemy aktualizować interfejs aby informować użytkownika o postępach np.progressBar.Value = progessValue; Jeśli powyż...
Podczas projektowania aplikacji jedną z kluczowych kwestii jest wyodrębnienie potencjalnie czasochłonnych operacji z kodu, oraz przystosowanie ich do działania w osobnych wątkach. Gdy w grę wchodzi GUI, czynność ta jest wręcz niezbędna. Standardowym modelem jest przygotowanie wszystkich danych wejściowych dla długotrwałego procesu i przekazanie ich do nowego wątku; tam też rozpoczynając asynchroniczną pracę. Po jej zakończeniu, odbieramy wyniki i już bez znaczących przestojów możemy odpowiednio na nie za...
Dzisiejszy wpis to praktycznie dokończenie dwóch poprzednich, stanowiące jakieś ich uzupełnienie, lub też swojsko rzecz ujmując ‘dobicie’. Do zbadania na dziś przygotowałem klasy Timer i BackgroundWorker. Ta druga trochę nietypowo, ponieważ wykorzystana zostanie w ‘aplikacji’ konsolowej, a głównym(tak mi się zdaje) jej zastosowaniem są aplikacje okienkowe i puszczanie złożonych czasowo operacji w tle, by GUI nie zostało ‘zawieszone’. Timer(System.Threading) Tutaj prosto i przyjemnie: jeśli chcemy odpala...
Podczas pisania aplikacji okienkowych często zdarza się, że nasz program pobiera duże ilości danych, a następnie wyświetla je użytkownikowi. Niezwykle denerwującą sytuacją jest, gdy całość danych wyświetla się "na raz". Jeśli nie "zamraża" to interfejsu użytkownika i jeszcze do tego pisze coś w stylu "Praca w toku" to jeszcze pół biedy, gorzej jak użytkownik pozostaje z okienkiem z uroczym dopiskiem "Nie odpowiada". Wielkie szanse, że zirytowany taką sytuacją wyłączy naszą aplikację i zgłosi nam błąd - ż...