Zaprojektować, zaimplementować i zademonstrować w praktyce użycie klas realizujących poniższe wytyczne:
Zdarzenia
Klasa dziedzicząca z CheckBox udostępniająca zdarzenie pozwalające na reakcję w przypadku co n-tej zmiany stanu zaznaczenia (N ustawiane jako właściwość o nazwie "Cykl" - na wzór właściwości "Items" klasy ListBox).
Klasa dziedzicząca z WebBrowser udostępniająca zdarzenie pozwalające na reakcję w przypadku próby nawigacji do stron zawierających w adresie jedno z zakazanych słów (lista zakazanych słów jako właściwość).
Klasa dziedzicząca z TextBox udostępniająca zdarzenia pozwalające na reakcję w przypadkach: skasowanie zawartości, wklejenie tekstu ze schowka, skopiowanie zawartości do schowka.
Wyjątki
Zademonstrować mechanizm wybiórczej obsługi wyjątków (program ma identyfikować rodzaj wyjątku (a dokładniej jego klasę) jako jeden z kilku możliwych).
Zademonstrować mechanizmy kreowania i zgłaszania własnych wyjątków.
Zademonstrować mechanizm powtórnego zgłaszania wyjątków na przykładzie kaskadowo wywoływanych w zagnieżdżeniu kilku procedur; każda procedura ma obsługiwać wyjątek w widoczny sposób.
Zademonstrować mechanizm zagnieżdżania wyjątków.
Zademonstrować współdziałanie bloków try..catch i try...finally
Napisać dwa warianty tej samej aplikacji (np. obliczanie pierwiastków równania kwadratowego) obsługującej GUI; jeden wariant ma programowo, interaktywnie nadzorować poprawność wprowadzanych przez użytkownika danych; drugi wariant ma wykorzystywać obsługę wyjątków.
Wątki
Iteracyjne wyszukiwanie wspólnych mianowników dla wszystkich par liczb z zadanego przedziału bez blokowania aplikacji (czyli w wątku drugoplanowym) z możliwością przerwania, pauzy, z prezentacją wyników i postępu.
Zadanie j.w. ale w wykonaniu wielowątkowym (jeden wątek dla danej pary) z możliwością definiowania liczby jednocześnie uruchomiomych wątków oraz porównaniem efektywności.
Sporządzenie listy ścieżek wszystkich plików na dysku w wątku drugoplanowym (z zatrzymaniem, pauzą, prezentacją postępu,...)
Pobieranie dużego pliku z sieci - jeden wątek drugoplanowy (warunki jak w zad.1) np. z pomocą klasy WebClient.
Pobieranie wielu plików z sieci - wiele wątków (warunki jak w zad.2).
Tablicowanie funkcji w dużej dziedzinie z użyciem klasy BackgroundWorker (z zatrzymaniem, prezentacją postępu).
Wykonać po min. jednym zadaniu z trzech powyższych działów.