תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- windows 8.1 ...

15
ייייי ייייייייי, יייייי יייייי ייייייייי- יWindows 8.1 יייייייייי- יWindows Phone 8 יייייי ייייי

Upload: fatima-little

Post on 30-Dec-2015

29 views

Category:

Documents


4 download

DESCRIPTION

תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1 ואפליקציות ל- Windows Phone 8. סילבוס הקורס. Threads in WPF. Threads in WPF. הפיתרון – להעביר את הפעולה המתמשכת לתהליך נפרד. הבעיה – לא טריוויאלי באפליקציות חלונאיות ( WinForms או WPF ). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

, אסינכרוני תכנותופיתוח תקשורת

אפליקציות Windows 8.1ל-

ואפליקציות Windows Phoneל-8

הקורס סילבוס

Page 2: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

Threads in WPF

Page 3: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

Threads in WPFהפיתרון. נפרד – לתהליך המתמשכת הפעולה את להעביר

חלונאיות – )הבעיה באפליקציות טריוויאלי (.WPFאו WinFormsלא

WPF ( אוWinForms - ה( עבודת כל את לבצע אותנו את UIמחייב שיצר בתהליך רק.UIה-

: הבא הקוד את לכתוב ניסיון

: הבאה לחריגה יגרום

private void btnDoSomething_Click(object sender, RoutedEventArgs e) { Thread thread = new Thread(Paint); thread.Start(); }

“The calling thread must be STA”

: קוד WpfThread02דוגמת

Page 4: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

Threads in WPF

היא לחריגה .STA – Single Thread Apartmentהסיבה

STA( – משתמשים אנו בה הטכנולוגיה של מגבלה (,WinFormsאו WPFלא. ההפעלה מערכת של תכתיב אלא

STA? , איתה מתמודדים איך מגבלה זה

הנקרא רכיב .BackgroundWorkerבאמצעותWPF ( או

WinForms

)לבצע אותנו מחייב

- ה עבודת כל את

UI את שיצר בתהליך רק

UIה-

Page 5: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

Threads in WPF - BackgroundWorkerBackgroundWorker

השמות במרחב המוגדרת שימושית .System.ComponentModelמחלקה

- ב וארוכות כבדות מטלות העברת מאפשרת .WPFהמחלקה נפרד לתהליך

. , ביטול על או סיום על התהליך התקדמות על לדווח יכולה

. בחריגים לטיפול מובנית יכולת מכילה

רכיבי לעדכן .UIיכולת

: דוגמה קודBackgroundWorkerSample

Page 6: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

Threads in WPF - BackgroundWorker - ב משתמשים :BackgroundWorkerכיצד

.1- ב ) או החלון מחלקת של בתכונה מהמחלקה אובייקט (:XAMLהוספת רוצים אם

התכונות 2. " הגדרת : ח דו קבלת ומאפשרים ביטול מאפשרים החלון של בבנאי הבאותהתקדמות:

public partial class MainWindow : Window { BackgroundWorker background_worker = new BackgroundWorker(); …. }

public MainWindow(){ InitializeComponent(); background_worker.WorkerSupportsCancellation = true; background_worker.WorkerReportsProgress = true;}

: דוגמה קודBackgroundWorkerSample

Page 7: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

Threads in WPF - BackgroundWorker.3: הבאים האירועים הגדרת

האירוע המתודה DoWorkהגדרת מופעלת כאשר מועלה אשרRunWorkserAsync ,שרוצים האסינכרונית הפעולה את מממש באירוע הטיפול

. ברקע לבצע

האירועReportProgress בהתקדמות הן הממשק את לעדכן שנרצה פעם בכל יופעל. ביניים תוצאות לעדכן מנת על והן התהליך

, השלישי .RunWorkerCompletedהאירוע מבוטל או מסתיים התהליך כאשר מועלהpublic MainWindow(){ InitializeComponent(); background_worker.WorkerSupportsCancellation = true; background_worker.WorkerReportsProgress = true; background_worker.DoWork += background_worker_DoWork; background_worker.ProgressChanged += background_worker_ProgressChanged; background_worker.RunWorkerCompleted += background_worker_RunWorkerCompleted;}

: דוגמה קודBackgroundWorkerSample

Page 8: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

Threads in WPF - BackgroundWorker: התהליך הרצת

private void btnDoSomething_Click(object sender, RoutedEventArgs e) { background_worker.RunWorkerAsync(1000); }

לתהליך הנשלח הפרמטר

: דוגמה קודBackgroundWorkerSample

Page 9: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

Threads in WPF - BackgroundWorkerהאירוע .DoWorkמימוש ברקע, ירוץ אשר התהליך מימוש

, מטיפוס הוא הפרמטר פרמטר להעביר .Objectניתן

. התהליך ריצת את לעצור מנת על בוטל התהליך האם הביצוע במהלך לבדוק יש

void background_worker_DoWork(object sender, DoWorkEventArgs e) { for (int i = 0; i < (int)e.Argument; i++) { if (background_worker.CancellationPending) { e.Cancel = true; break; } Parameters parameter = Paint(); background_worker.ReportProgress(i / 100, parameter); Thread.Sleep(10); } }

בוטל התהליך האם בדיקה

לאירוע הנשלח הפרמטר

האירוע ProgressהעלאתChanged, התקדמות – אחוז הראשון הפרמטר

. נוסף – מידע השני הפרמטר

Page 10: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

Threads in WPF - BackgroundWorkerבאירוע :ProgressChangedהטיפול המשתמש – ממשק עדכון

void background_worker_ProgressChanged(object sender, ProgressChangedEventArgs e) { Parameters parameter = e.UserState as Parameters; Ellipse ellipse = new Ellipse(); ellipse.Width = parameter.Size.Width; ellipse.Height = parameter.Size.Height; ellipse.Fill = new SolidColorBrush(parameter.Color); Canvas.SetTop(ellipse, parameter.Location.Y); Canvas.SetLeft(ellipse, parameter.Location.X); canvas.Children.Add(ellipse); txtInterationCounter.Text = e.ProgressPercentage.ToString() + " %"; }

שנשלח הפרמטר

העיבוד .התקדמות

: דוגמה קודBackgroundWorkerSample

Page 11: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

Threads in WPF - BackgroundWorker: התהליך סיום

void background_worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Cancelled) { MessageBox.Show("BackgroundWorker canceled"); } else { MessageBox.Show("BackgroundWorker ended successfully"); } }

ביטול

העיבוד .סיום

: דוגמה קודBackgroundWorkerSample

Page 12: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

Threads in WPF - BackgroundWorker

: דוגמה קודBackgroundWorkerSample

Page 13: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

Threads in WPF - BackgroundWorker רכיבי מספר להגדיר .BackgroundWorkerניתן בחלון

כלBackgroundWorker. תהליכים מספר להפעיל יכול

: קוד .BackgroundWorkerSample02דוגמת

Page 14: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

תרגולהתרגילים 4תרגיל מדף

Page 15: תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1  ואפליקציות ל- Windows Phone 8

: , , ב להוריד ניתן מצגות חומרים הסילבוס את

. . .www corner co il