Top Banner
Programowanie urządzeń mobilnych – wykład IV KIS Paweł Fiderek
37

Programowanie urządzeń mobilnych – wykład IV

Jan 01, 2016

Download

Documents

harlan-knowles

Programowanie urządzeń mobilnych – wykład IV. KIS Paweł Fiderek. Zdarzenia. public event EventHandler Bang;. Bang( this , EventArgs.Empty );. Obsługa zdarzeń. NullReferenceExcepion. if (Bang != null) Bang(this, EventArgs.Empty );. EventHandler < EventArgs > temp = Bang; - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programowanie urządzeń mobilnych – wykład IV

Programowanie urządzeń mobilnych – wykład IV

KISPaweł Fiderek

Page 2: Programowanie urządzeń mobilnych – wykład IV

Zdarzenia

public event EventHandler<EventArgs> Bang;

Bang(this, EventArgs.Empty);

Page 3: Programowanie urządzeń mobilnych – wykład IV

Obsługa zdarzeń

NullReferenceExcepion.

if (Bang != null) Bang(this, EventArgs.Empty);

Page 4: Programowanie urządzeń mobilnych – wykład IV

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) { } }}

Page 5: Programowanie urządzeń mobilnych – wykład IV

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,

Page 6: Programowanie urządzeń mobilnych – wykład IV

• 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,

Page 7: Programowanie urządzeń mobilnych – wykład IV

• 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.

Page 8: Programowanie urządzeń mobilnych – wykład IV

try

{

}

catch(nazwa_wyjątku1)

{

}

Page 9: Programowanie urządzeń mobilnych – wykład IV

catch(nazwa_wyjątku2) {

}

finalny

{

}

Page 10: Programowanie urządzeń mobilnych – wykład IV

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”); }}}

Page 11: Programowanie urządzeń mobilnych – wykład IV

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

Page 12: Programowanie urządzeń mobilnych – wykład IV

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.

Page 13: Programowanie urządzeń mobilnych – wykład IV

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;

Page 14: Programowanie urządzeń mobilnych – wykład IV

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; }

Page 15: Programowanie urządzeń mobilnych – wykład IV

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; }}

Page 16: Programowanie urządzeń mobilnych – wykład IV

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());

Page 17: Programowanie urządzeń mobilnych – wykład IV

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}

Page 18: Programowanie urządzeń mobilnych – wykład IV

Delegacje zdarzeń

public delegate void EventHandler(object sender, EventArgs e);

public class Przycisk { public event EventHandler Klikniecie;

}

Page 19: Programowanie urządzeń mobilnych – wykład IV

Wątki w Windows Mobile

using System.Threading;………………………….private void proc(){…………….}………………Thread name = new Thread(proc);……………………..

Page 20: Programowanie urządzeń mobilnych – wykład IV

Klasa Thread - właściwości

• IsAlive• IsBackground• IsThreadPoolThread• ManagedThreadId• Name• Piority• ThreadState

Page 21: Programowanie urządzeń mobilnych – wykład IV

Klasa Thread - metody

• Abort()• Interrupt()• Join()• Start()

Page 22: Programowanie urządzeń mobilnych – wykład IV

Klasa Thread - właściwości statyczne

• CurrentContext • CurrentPrincipal• CurrentThread

Page 23: Programowanie urządzeń mobilnych – wykład IV

Klasa Thread - metody statyczne

• BeginCriticalRegion()• EndCriticalRegion()• GetDomain()• GetDomainID()• ResetAbort()• Sleep()• SpinWait()• VolatileRead()• VolatileWrite()

Page 24: Programowanie urządzeń mobilnych – wykład IV

Klasa Thread - Typ wyliczeniowy ThreadState

• Aborted• AbortRequested• Background• Running• Stopped• StopRequested• Unstarted• WaitSleepJoin

Page 25: Programowanie urządzeń mobilnych – wykład IV

Priorytet wyjątków

• Highest• AboveNormal• Normal• BelowNormal• Lowest

Page 26: Programowanie urządzeń mobilnych – wykład IV

Zastowanie teorii w praktyce - przykłady

Page 27: Programowanie urządzeń mobilnych – wykład IV
Page 28: Programowanie urządzeń mobilnych – wykład IV
Page 29: Programowanie urządzeń mobilnych – wykład IV
Page 30: Programowanie urządzeń mobilnych – wykład IV
Page 31: Programowanie urządzeń mobilnych – wykład IV
Page 32: Programowanie urządzeń mobilnych – wykład IV
Page 33: Programowanie urządzeń mobilnych – wykład IV
Page 34: Programowanie urządzeń mobilnych – wykład IV
Page 35: Programowanie urządzeń mobilnych – wykład IV
Page 36: Programowanie urządzeń mobilnych – wykład IV
Page 37: Programowanie urządzeń mobilnych – wykład IV