[Windows Phone] HttpNotificationChannel Open Method 注意事項

[Windows Phone] HttpNotificationChannel Open Method 注意事項

這是最近遇到的一個問題經驗,在此記錄一下

HttpNotificationChannel 這個類別是在開發 Windows Phone App 推播通知服務會需要用到的一個類別,透過這個類別來建立服務通道,詳細的說明可以直接參閱 MSDN : HttpNotificationChannel 

 

image

 

在 HttpNotificationChannel 類別提供了一個 Open 的方法 , 是用來開啟通道的,大致上的程式會是

   1: HttpChannel = new HttpNotificationChannel("xxxxxx");
   2: HttpChannel.Open();

 

然而在 .Open方法後馬上取HttpChannel.ChannelUri 值時,卻經常性的發生ChannelUri 根本沒值的情況,但卻又不是每次發生,經過不斷測試及追蹤觀查中斷點後,發現到 ChannelUri 的值並不是那麼即時性的可以取得,也就是當執行.Open方法後需要一點時間來完成開啟通道的動作,而HttpChannel類別中有些屬性是在通道被打開完成後才會拿的到值。而解決方法也很簡單,以取得 ChannelUri 值為例,只要改為在 HttpChannel_ChannelUriUpdated 事件裡取就可以了 。

 

[ 原寫法 ]

   1: ttpChannel = new HttpNotificationChannel(_nf.ChannelName.ToString());
   2: HttpChannel.Open();
   3: var channeluri = HttpChannel.ChannelUri;

 

[ 修改後 ]

   1: HttpChannel = new HttpNotificationChannel(_nf.ChannelName.ToString());
   2: HttpChannel.ChannelUriUpdated += HttpChannel_ChannelUriUpdated;
   3: HttpChannel.Open();
   4:  
   5:  
   6: void HttpChannel_ChannelUriUpdated(object sender, NotificationChannelUriEventArgs e)
   7: {
   8:     var result = e.ChannelUri;
   9: }

 

HttpNotificationChannel.ChannelUriUpdated Event

 

若本文對您有所幫助,歡迎轉貼,但請在加註【轉貼】及來源出處,並在附上本篇的超連結,感恩您的配合囉。

By No.18