Danh mục

Các giải pháp lập trình C Sharp_3

Số trang: 53      Loại file: pdf      Dung lượng: 688.79 KB      Lượt xem: 11      Lượt tải: 0    
tailieu_vip

Phí tải xuống: 28,000 VND Tải xuống file đầy đủ (53 trang) 0
Xem trước 6 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Tham khảo tài liệu các giải pháp lập trình c sharp_3, công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
Các giải pháp lập trình C Sharp_3106Chương 4: Ti u trình, ti n trình, và s ng b public static void PollingExample() { Console.WriteLine(Environment.NewLine + *** Running Polling Example ***); // G i LongRunningMethod m t cách b t ng b . Truy n null cho // c y nhi m callback và i tư ng tr ng thái b t ng b . AsyncExampleDelegate longRunningMethod = new AsyncExampleDelegate(LongRunningMethod); IAsyncResult asyncResult = longRunningMethod.BeginInvoke(2000, Polling, null, null); // Th c hi n polling ki m tra phương th c th c thi // b t ng b k t thúc hay chưa. N u chưa k t thúc // thì i vào tr ng thái ch trong 300 mini-giây // trư c khi th c hi n polling l n n a. Console.WriteLine({0} : Poll repeatedly until method is + complete..., DateTime.Now.ToString(HH:mm:ss.ffff)); while(!asyncResult.IsCompleted) { Console.WriteLine({0} : Polling..., DateTime.Now.ToString(HH:mm:ss.ffff)); Thread.Sleep(300); } // Thu l y k t qu c a phương th c th c thi b t ng b . DateTime completion = longRunningMethod.EndInvoke(asyncResult); // Hi n th thông tin k t thúc. Console.WriteLine({0} : Polling example complete., completion.ToString(HH:mm:ss.ffff)); } 3. Phương th c WaitingExample Phương th c WaitingExample th c thi b t ng b phương th c LongRunningExample và sau ó ch cho n khi LongRunningMethod k t thúc. WaitingExample s d ng thu c tính AsyncWaitHandle c a th hi n IAsyncResult ( ư c tr v b i BeginInvoke) có ư c m t WaitHandle và sau ó g i phương th c WaitOne c a WaitHandle. Vi c s d ng giá tr time-out cho phép WaitingExample d ng quá trình i th c hi n công vi c khác ho c d ng hoàn toàn n u phương th c th c thi b t ng b di n ra quá lâu. public static void WaitingExample() { Console.WriteLine(Environment.NewLine + *** Running Waiting Example ***); // G i LongRunningMethod m t cách b t ng b . Truy n null cho // c y nhi m callback và i tư ng tr ng thái b t ng b . AsyncExampleDelegate longRunningMethod = new AsyncExampleDelegate(LongRunningMethod); IAsyncResult asyncResult = longRunningMethod.BeginInvoke(2000, Waiting, null, null); // i phương th c th c thi b t ng b k t thúc. // Time-out sau 300 mili-giây và hi n th tr ng thái ra // c a s Console trư c khi ti p t c i. 107 Chương 4: Ti u trình, ti n trình, và s ng b Console.WriteLine({0} : Waiting until method is complete..., DateTime.Now.ToString(HH:mm:ss.ffff)); while(!asyncResult.AsyncWaitHandle.WaitOne(300, false)) { Console.WriteLine({0} : Wait timeout..., DateTime.Now.ToString(HH:mm:ss.ffff)); } // Thu l y k t qu c a phương th c th c thi b t ng b . DateTime completion = longRunningMethod.EndInvoke(asyncResult); // Hi n th thông tin k t thúc. Console.WriteLine({0} : Waiting example complete., completion.ToString(HH:mm:ss.ffff)); }4. Phương th c WaitAllExample Phương th c WaitAllExample th c thi b t ng b phương th c LongRunningMethod nhi u l n và sau ó s d ng m ng các i tư ng WaitHandle i cho n khi t t c các phương th c k t thúc. public static void WaitAllExample() { Console.WriteLine(Environment.NewLine + *** Running WaitAll Example ***); // M t ArrayList ch a các th hi n IAsyncResult // cho các phương th c th c thi b t ng b . ArrayList asyncResults = new ArrayList(3); // G i ba l n LongRunningMethod m t cách b t ng b . // Truy n null cho c y nhi m callback và i tư ng // tr ng thái b t ng b . Thêm th hi n IAsyncResult // cho m i phương th c vào ArrayList. AsyncExampleDelegate longRunningMethod = new AsyncExampleDelegate(LongRunningMethod); asyncResults.Add(longRunningMethod.BeginInvoke(3000, WaitAll 1, null, null)); asyncResults.Add(longRunningMethod.BeginInvoke(2500, WaitAll 2, null, null)); asyncResults.Add(longRunningMethod.BeginInvoke(1500, WaitAll 3, null, null)); // T o m t m ng các i tư ng WaitHandle, // s ư c s d ng i t t c các phương th c // th c thi b t ng b k t thúc. WaitHandle[] waitHandles = new WaitHandle[3]; for (int count = 0; count < 3; count++) { ...

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