Danh mục

Bài giảng Lập trình Windows Phone (Module 3): Bài 6 - Trần Duy Thanh

Số trang: 17      Loại file: pptx      Dung lượng: 200.51 KB      Lượt xem: 8      Lượt tải: 0    
10.10.2023

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Trong bài 6 người học sẽ tìm hiểu về lập trình đồng bộ và bất đồng bộ trong Windows Phone. Các nội dung chính được trình bày trong bài giảng này gồm có: Khái niệm đồng bộ và bất đồng bộ, Async method, BackgroundWorker, Task. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình Windows Phone (Module 3): Bài 6 - Trần Duy Thanh TrườngĐHKhoaHọcTựNhiênTP.HCM TRUNGTÂMTINHỌCLậptrìnhWindowsPhoneModule3–Bài6:Lậptrìnhđồngbộvàbấtđồngbộ GVBiênsoạn:TrầnDuyThanh 2014Nội dung• Khái niệm đồng bộ và bất đồng bộ• Async method• BackgroundWorker• Task SynchronousvàAsynchronousProgramming 2Khái niệm đồng bộ và bấtđồng bộSynchronous (đồng bộ)Asynchronous (bất đồng bộ) SynchronousvàAsynchronousProgramming 3Khái niệm đồng bộ và bấtđồng bộ SynchronousvàAsynchronousProgramming 4Async method SynchronousvàAsynchronousProgramming 5Async methodprivate async void startButton_Click(object sender,RoutedEventArgs e) { // ONE Task getLengthTask = AccessTheWebAsync(); // FOUR int contentLength = await getLengthTask; // SIX resultsTextBox.Text += String.Format( Length of the downloadedstring: {0}. , contentLength); } SynchronousvàAsynchronousProgramming 6Async methodasync Task AccessTheWebAsync() { // TWO HttpClient client = new HttpClient(); Task getStringTask =client.GetStringAsync(http://msdn.microsoft.com); // THREE string urlContents = await getStringTask; // FIVE return urlContents.Length; SynchronousvàAsynchronousProgramming 7BackgroundWorkerBackgroundWorker là một lớp cho phép ta viếtđa tiến trình để cập nhật giao diện ở thời gianthực, nằm trong thư việnSystem.ComponentModelBackgroundWorkerbw=newBackgroundWorker();//hỗtrợchophéphủybw.WorkerSupportsCancellation=true;//hỗtrợchophépcậpnhậtbw.WorkerReportsProgress=true;//sựkiệnđểkíchhoạtbătđầuchạyBackgroundWorkerbw.DoWork+=bw_DoWork;//Sựkiệnđểcậpnhậtbw.ProgressChanged+=bw_ProgressChanged;//sựkiệnđánhdấulàđãxong 8 SynchronousvàAsynchronousProgrammingbw.RunWorkerCompleted+=bw_RunWorkerCompleted;BackgroundWorkerbw.RunWorkerAsync();private void bw_DoWork(object sender, DoWorkEventArgs e) { bw.ReportProgress(i * 10); }private void bw_ProgressChanged(object sender,ProgressChangedEventArgs e) {…}private void bw_RunWorkerCompleted(object sender,RunWorkerCompletedEventArgs e) {… } SynchronousvàAsynchronousProgramming 9Task• Runchạy bằng hàm Run• Start  chạy bằng hàm Start• StartNew  chạy bằng hàm StartNew• ContinueWithChạy Chuỗi tác vụ• Resultlấy kết qủa trả về• Wait & WaitAllchờ 1 tác vụ, nhiều tác vụ SynchronousvàAsynchronousProgramming 10RunpublicintFib(intn){if(nFib(10));MessageBox.Show(Fib=+task.Result); SynchronousvàAsynchronousProgramming 11Startint[]nums={2,19,17,21,4,13,8,12,7,3,5};varf0=newTask(()=>nums.Average());f0.Start(); SynchronousvàAsynchronousProgramming 12StartNewintn=5;vartask=Task.Factory.StartNew(()=>Fib(n)); SynchronousvàAsynchronousProgramming 13ContinueWithvart1=newTask(DoOnFirst);vart2=t1.ContinueWith(DoOnSecond);t1.Start(); SynchronousvàAsynchronousProgramming 14Wait & WaitAllvartask=Task.Factory.StartNew(()=>{intn=5;ints=0;for(inti=1;iWait & WaitAllpublicintFunc1(intx){returnx*2;}publicvoidFunc2(){….}vartask1=Task.Factory.StartNew(()=>Func1(6));vartask2=Task.Factory.StartNew(()=>Func2());Task.WaitAll(task1,task2);MessageBox.Show(xcủatask1=+task1.Result); SynchronousvàAsynchronousProgramming 16Thảo luận SynchronousvàAsynchronousProgramming 17

Tài liệu được xem nhiều: