成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WP7開發中自定義事件的處理

移動開發
在實際的開發中,我們需要自己去給相關的類自定義一些事件來滿足業務的要求,特別在使用觀察著模式的時候,在WP7中利用事件去實現是理所當然的。

在Windows Phone的應用開發里面,對于事件這種東西我們可以隨處可見,系統本來就已經封裝好了各種各樣的事件機制,如按鈕的單擊事件等等的。在實際的開發中,我們需要自己去給相關的類自定義一些事件來滿足業務的要求,特別在使用觀察著模式的時候,在WP7中利用事件去實現是理所當然的。

自定義事件步驟有下面的幾個步驟:

1、繼承EventArgs類實現自己自定義的事件參數;

2、定義一個委托;

3、定義一個事件;

4、添加事件。

下面來看一下一個Demo對自定義事件的實現,這個Demo只是對網絡請求的狀態進行一個簡單的事件監控的調用處理:

自定義的事件參數類

StateChangedEventArgs.cs

 

  1. using System;  
  2. namespace EventDemo  
  3. {  
  4.     /// <summary> 
  5.     /// 狀態事件  
  6.     /// </summary> 
  7.     public class StateChangedEventArgs : EventArgs  
  8.     {  
  9.         public readonly string NewState;  
  10.         public readonly DateTime Timestamp;  
  11.         public StateChangedEventArgs(string newstate)  
  12.         {  
  13.             this.NewState = newstate;  
  14.             this.Timestamp = DateTime.Now;  
  15.         }  
  16.     }  

 

在業務類里面定義事件

NetTask.cs

 

  1. using System;  
  2. using System.Net;  
  3. using System.Threading;  
  4. using System.IO;  
  5. namespace EventDemo  
  6. {  
  7.     public class NetTask  
  8.     {  
  9.         //定義委托  
  10.         public delegate void StateChanged(NetTask sender, StateChangedEventArgs args);  
  11.         //定義事件  
  12.         public event StateChanged OnStateChanged;  
  13.         //出事狀態  
  14.         public string NetTaskName = "";  
  15.  /// <summary> 
  16.         /// 網絡任務  
  17.         /// </summary> 
  18.         /// <param name="url"></param> 
  19.         public void StartNetTask(string url)  
  20.         {  
  21.             bool success = false;  
  22.             int attempt = 0;  
  23.             while (attempt < 3)  
  24.             {  
  25.                 AsyncCallback callback = null;  
  26.                 //開啟線程等待  
  27.                 ManualResetEvent webRequestWait = new ManualResetEvent(false);  
  28.                 Uri targetUri = new Uri(url);  
  29.                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetUri);  
  30.                 request.Method = "POST";  
  31.                 if (callback == null)  
  32.                 {  
  33.                     callback = delegate(IAsyncResult asRequest)  
  34.                     {  
  35.                         try  
  36.                         {  
  37.                             success = true;  
  38.                             webRequestWait.Set();  
  39.                             //……  
  40.                         }  
  41.                         catch  
  42.                         {  
  43.                             OnStateChanged(this, new StateChangedEventArgs("重試"));  
  44.                             webRequestWait.Set();  
  45.                         }  
  46.                     };  
  47.                 }  
  48.                 request.BeginGetRequestStream(callback, request);  
  49.  
  50.                 //等待線程結束  
  51.                 webRequestWait.WaitOne();  
  52.                 if (success)  
  53.                 {  
  54.                     break;  
  55.                 }  
  56.                 attempt++;  
  57.                 Thread.Sleep(1000);  
  58.             }  
  59.             if (success)  
  60.             {  
  61.                 OnStateChanged(this, new StateChangedEventArgs("成功"));  
  62.                 Thread.Sleep(50);  
  63.             }  
  64.             else  
  65.             {  
  66.                 OnStateChanged(this, new StateChangedEventArgs("失敗"));  
  67.             }  
  68.         }  
  69.     }  

 

簡單的測試一下:

 

  1. <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
  2.             <Button Content="測試網絡" Height="72" HorizontalAlignment="Left" Margin="143,105,0,0" Name="button1" VerticalAlignment="Top" Width="202" Click="button1_Click" /> 
  3.             <TextBlock Height="50" HorizontalAlignment="Left" Margin="96,270,0,0" Name="textBlock1" Text="網絡的狀態:" VerticalAlignment="Top" Width="126" /> 
  4.             <TextBlock Height="48" HorizontalAlignment="Left" Margin="34,326,0,0" Name="textBlock2" Text="" VerticalAlignment="Top" Width="377" /> 
  5. </Grid> 

 

MainPage.xaml.cs

 

  1. using System.Windows;  
  2. using Microsoft.Phone.Controls;  
  3. namespace EventDemo  
  4. {  
  5.     public partial class MainPage : PhoneApplicationPage  
  6.     {  
  7.         public MainPage()  
  8.         {  
  9.             InitializeComponent();  
  10.         }  
  11.  
  12.         private void button1_Click(object sender, RoutedEventArgs e)  
  13.         {  
  14.             NetTask netTask = new NetTask();  
  15.             netTask.OnStateChanged += OnStateChanged;  
  16.             netTask.NetTaskName = "測試網絡";  
  17.             netTask.StartNetTask("http://www.cnblogs.com");  
  18.         }  
  19.  
  20.         public void OnStateChanged(object sender, StateChangedEventArgs e)  
  21.         {  
  22.             NetTask temp = sender as NetTask;  
  23.             textBlock2.Text = temp.NetTaskName + "," + e.NewState+","+e.Timestamp.ToLongTimeString();  
  24.         }  
  25.     }  

 

運行的效果如下:

運行的效果

原文鏈接:http://www.cnblogs.com/linzheng/archive/2012/03/26/2418811.html

責任編輯:王曉東 來源: 博客
相關推薦

2011-03-29 13:03:59

IronRubyWindows Pho.NET

2011-02-28 10:42:14

Windows Pho微軟

2012-05-15 14:00:51

WP7開發環境

2009-08-04 09:56:46

C#事件處理自定義事件

2011-05-12 13:03:36

WP7數據庫選擇

2013-02-25 11:19:43

WP開發Windows PhoWP開發者

2012-03-22 14:50:00

WP7微軟諾基亞

2012-04-05 13:39:42

WP7開發Windows Pho

2013-06-17 14:10:08

WP7開發Windows Pho豆瓣電臺

2009-08-04 13:53:58

C#委托類C#事件

2012-05-14 10:33:43

Coding4Fun

2013-04-12 12:36:13

WindowsPhon

2013-06-17 14:46:32

2013-06-17 12:44:38

WP7開發Windows Pho數獨游戲

2013-06-17 15:03:43

WP7開發騰訊微博SDK源碼下載

2013-06-17 14:35:40

WP7Windows Pho應用開源模板

2013-06-17 12:28:00

WP7開發Windows Pho控件傾斜特效源

2013-06-17 11:04:11

WP7開發Windows Pho日歷源碼下載

2013-06-17 14:58:23

2013-06-17 10:31:42

WP7開發日歷控件源碼下載
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲久久| 国产欧美一级二级三级在线视频 | 中文字幕一区二区三区四区不卡 | 夜色www国产精品资源站 | 欧美一区在线视频 | 久久精品久久久 | 在线免费观看黄色网址 | 四虎影视1304t| 成年人黄色一级毛片 | 九九久久精品 | 久久的色 | 国产综合久久久 | 一区二区在线不卡 | 日韩欧美在线一区 | 成人视屏在线观看 | 久久午夜国产精品www忘忧草 | 99re热精品视频 | .国产精品成人自产拍在线观看6 | 欧美一级在线免费观看 | 亚洲日韩中文字幕一区 | 美美女高清毛片视频免费观看 | 国产伦精品一区二区三区四区视频 | 久久国产一区二区三区 | 成人国产在线视频 | 欧美性大战xxxxx久久久 | 精品一区国产 | 91成人在线 | 日本又色又爽又黄又高潮 | 国产精品久久久久久久久久久免费看 | 日韩精品视频在线 | 美女一级a毛片免费观看97 | 国产精久久久久久 | 国产精品高潮呻吟久久av黑人 | 欧美日韩国产在线观看 | 自拍偷拍在线视频 | 国产成人免费视频网站视频社区 | 欧美一区永久视频免费观看 | 国产精品污污视频 | 自拍第一页 | 亚洲视频在线播放 | 在线看片国产精品 |