Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowanie urządzeń mobilnych – wykład IV

Podobne prezentacje


Prezentacja na temat: "Programowanie urządzeń mobilnych – wykład IV"— Zapis prezentacji:

1 Programowanie urządzeń mobilnych – wykład IV
KIS Paweł Fiderek

2 Zdarzenia public event EventHandler<EventArgs> Bang;
Bang(this, EventArgs.Empty);

3 Obsługa zdarzeń NullReferenceExcepion.
if (Bang != null) Bang(this, EventArgs.Empty);

4 EventHandler<EventArgs> temp = Bang;
if (temp != null) temp(this, EventArgs.Empty); EventHandler<EventArgs> temp = Bang; if (temp != null) { var list = ev.GetInvocationList(); foreach (EventHandler<EventArgs> d in list) try d.Invoke(this, EventArgs.Empty); } catch (Exception) { }

5 Wyjatki Wyjątki maja następujące własności:
wyjątki to typy, które dziedziczą z klasy System.Exception, wyjątki, które mogą być zgłaszane należy objąć sekcja try, wyjątki są zgłaszane przez stosowanie słowa kluczowego throw, w momencie zgłoszenia wyjątku, kontrola sterownia jest przekazywana do pierwszej obsługi wyjątku określonej słowem catch,

6 jeśli nie ma obsługi zgłoszonego wyjątku, program zostaje zatrzymany i wyświetlany jest komunikat o błędzie, nie należy przechwytywać wyjątku, który nie jest możliwy do obsłużenia i wprowadzenia, poprzez to aplikacja przechodzi w stan nieokreślony. W przypadku przechwycenia System.Exception najlepiej zgłosić ten wyjątek ponownie na końcu bloku catch, warto w bloku wyjątku podawać nie tylko typ wyjątku ale ta reprezentująca wyjątek może dostarczyć dodatkowych informacji o powodach wystąpienia sytuacji krytycznej,

7 obiekty wyjątku zawierają szczegółowe informacje o błędzie, min
obiekty wyjątku zawierają szczegółowe informacje o błędzie, min. stan stosu wywołań oraz tekstowy opis błędu, kod w sekcji finally jest wykonywany nawet w przypadku zgłoszenia wyjątku, blok finally warto stosować do zwalniana użytych zasobów, np.: zamykania otwartych strumieni i plików, wyjątki zarządzane w platformie .NET są implementowane z użyciem struktury wyjątków Win32/Win64, jednak nie można ich traktować jako wyjątków systemowych.

8 try { … } catch(nazwa_wyjątku1)

9 catch(nazwa_wyjątku2) { … } finalny

10 class Pokaz { public static void Main() int[] tablica = new int[10]; try for (int i = 0; ; i++) tablica[i] = i; Console.WriteLine(i); }} catch(IndexOutOfRangeException) Console.WriteLine(„Nastąpiło właśnie przepełnienie indeksu”); }}}

11 Najczęstsze przyczyny rzucanych wyjątków
ArraryTypeMismatchException – Typ wartości jaki chcemy przypisać jest niezgodny z typem docelowym DivideByZeroException – Próba dzielenia przez zero IndexOutOfRangeException – Przekroczenie indeksu InvalidCastException – Niepoprawne rzutowanie w czasie rzeczywistym OutOfMemoryException – Porażka wywołania new z powodu braku wolnej pamięci OverflowException – Arytmetyczne przepełnienie

12 Delegacje Bardzo często spotkamy się w naszych programach z sytuacją, w której nasz program wykonuje jakieś działanie, ale nie wie jakich obiektów a nawet metod ma w tym celu użyć. Na przykład: naciśnięcie przycisku ma poinformować inny obiekt, że przycisk został przyciśnięty. Ale jaki to obiekt? Nie wiadomo, dlatego najlepszym rozwiązaniem jest połączenie tego przycisku z delegatem, który następnie w czasie wykonywania się programu wywoła odpowiednią metodę. Możemy powiedzieć więcej, delegacje i zdarzenia są ściśle powiązane ze sobą, ponieważ delegat potrafi obsługiwać zdarzenie.

13 Konstrukcja delegacji
public delegate typ name(params); Typ - typ zwracanej przez delegaturę wartości np. in, string lub void; Name - nazwa delegacji wykorzystywana potem do jej wywołania; Params – parametry delegatury, muszą być zgodne z parametrami funkcji której delegacja dotyczy;

14 Delegacje – przykład użycia
public class Delegaty { public delegate int MojDelegat(int a, int b); public int Dodaj(int a, int b) return a + b; }

15 public int Odejmij(int a, int b) { return a - b; } public int Pomnoz(int a, int b) return a * b; public int Podziel(int a, int b) return a / b;

16 class Glowna { static void Main() Delegaty d = new Delegaty(); Delegaty.MojDelegat dodawanie = new Delegaty.MojDelegat(d.Dodaj); int wynikDodawania = dodawanie(4, 6); System.Console.WriteLine("Wynik dodawania wynosi: {0}.", wynikDodawania.ToString());

17 Delegaty. MojDelegat odejmowanie = new Delegaty. MojDelegat(d
Delegaty.MojDelegat odejmowanie = new Delegaty.MojDelegat(d.Odejmij); int wynikOdejmowania = odejmowanie(22, 11); System.Console.WriteLine("Wynik odejmowania wynosi: {0}.", wynikOdejmowania.ToString()); ……………………………………………………………………… //analogicznie dla mnożenia i dzielenia }

18 Delegacje zdarzeń public delegate void EventHandler(object sender, EventArgs e); public class Przycisk { public event EventHandler Klikniecie; }

19 Wątki w Windows Mobile using System.Threading; …………………………. private void proc() { ……………. } ……………… Thread name = new Thread(proc); ……………………..

20 Klasa Thread - właściwości
IsAlive IsBackground IsThreadPoolThread ManagedThreadId Name Piority ThreadState

21 Klasa Thread - metody Abort() Interrupt() Join() Start()

22 Klasa Thread - właściwości statyczne
CurrentContext CurrentPrincipal CurrentThread

23 Klasa Thread - metody statyczne
BeginCriticalRegion() EndCriticalRegion() GetDomain() GetDomainID() ResetAbort() Sleep() SpinWait() VolatileRead() VolatileWrite()

24 Klasa Thread - Typ wyliczeniowy ThreadState
Aborted AbortRequested Background Running Stopped StopRequested Unstarted WaitSleepJoin

25 Priorytet wyjątków Highest AboveNormal Normal BelowNormal Lowest

26 Zastowanie teorii w praktyce - przykłady

27

28

29

30

31

32

33

34

35

36

37


Pobierz ppt "Programowanie urządzeń mobilnych – wykład IV"

Podobne prezentacje


Reklamy Google