Lập trình Windows Phone - Module 3 – Bài 6: Lập trình đồng bộ và bất đồng bộ

Khái niệm đồng bộ và bất đồng bộ

Async method

BackgroundWorker

Task

 

pptx17 trang | Chia sẻ: Mr Hưng | Lượt xem: 776 | Lượt tải: 0download
Nội dung tài liệu Lập trình Windows Phone - Module 3 – Bài 6: Lập trình đồng bộ và bất đồng bộ, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Lập trình Windows Phone Module 3 – Bài 6: Lập trình đồng bộ và bất đồng bộGV Biên soạn: Trần Duy ThanhNội dungKhái niệm đồng bộ và bất đồng bộAsync methodBackgroundWorkerTaskKhái niệm đồng bộ và bất đồng bộSynchronous (đồng bộ)Asynchronous (bất đồng bộ)Khái niệm đồng bộ và bất đồng bộAsync methodAsync methodprivate async void startButton_Click(object sender, RoutedEventArgs e) { // ONE Task getLengthTask = AccessTheWebAsync();  // FOUR int contentLength = await getLengthTask;  // SIX resultsTextBox.Text += String.Format("\r\nLength of the downloaded string: {0}.\r\n", contentLength); } Async methodasync Task AccessTheWebAsync() { // TWO HttpClient client = new HttpClient(); Task getStringTask = client.GetStringAsync("");  // THREE string urlContents = await getStringTask;  // FIVE return urlContents.Length; }BackgroundWorkerBackgroundWorker 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 gian thực, nằm trong thư viện System.ComponentModelBackgroundWorker bw = new BackgroundWorker();//hỗ trợ cho phép hủybw.WorkerSupportsCancellation = true;//hỗ trợ cho phép cập nhậtbw.WorkerReportsProgress = true;//sự kiện để kích hoạt băt đầu chạy BackgroundWorkerbw.DoWork += bw_DoWork;//Sự kiện để cập nhậtbw.ProgressChanged += bw_ProgressChanged;//sự kiện đánh dấu là đã xongbw.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) { } TaskRunchạy bằng hàm RunStart  chạy bằng hàm StartStartNew  chạy bằng hàm StartNewContinueWith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ụRunpublic int Fib(int n){ if (n Fib(10));MessageBox.Show("Fib="+task.Result);Startint[] nums = { 2,19, 17, 21, 4, 13, 8, 12, 7, 3, 5 };var f0 = new Task(() => nums.Average());f0.Start();StartNewint n = 5;var task = Task.Factory.StartNew(() => Fib (n));ContinueWithvar t1 = new Task(DoOnFirst);var t2 = t1.ContinueWith(DoOnSecond);t1.Start();Wait & WaitAllvar task = Task.Factory.StartNew(() => { int n = 5; int s = 0; for (int i = 1; i Func1(6));var task2 = Task.Factory.StartNew(() => Func2()); Task.WaitAll(task1, task2);MessageBox.Show("x của task1="+task1.Result);Thảo luận

Các file đính kèm theo tài liệu này:

  • pptxwp_module3_bai6_asynchronous_programming_8742.pptx
Tài liệu liên quan