[Windows Phone] HttpNotificationChannel Open Method 注意事項
這是最近遇到的一個問題經驗,在此記錄一下
HttpNotificationChannel 這個類別是在開發 Windows Phone App 推播通知服務會需要用到的一個類別,透過這個類別來建立服務通道,詳細的說明可以直接參閱 MSDN : HttpNotificationChannel
在 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