2015-05-15 98 views
0

我正在嘗試在win8中構建通用應用程序,其中一個功能是顯示連接狀態。狀態顯示爲一個按鈕,如果處於活動狀態,則爲「綠色」,如果處於非活動狀態,則爲「紅色」通用應用程序網絡連接狀態

這裏是網絡檢測代碼:

 public class InternetConnectionChangedEventArgs : EventArgs 
{ 
    public InternetConnectionChangedEventArgs(bool isConnected) 
    { 
     this.isConnected = isConnected; 
    } 
    private bool isConnected; 

    public bool IsConnected 
    { 
     get { return isConnected; } 
    } 
} 

public static class Network 
{ 
    public static event EventHandler<InternetConnectionChangedEventArgs> 
     InternetConnectionChanged; 

    static Network() 
    { 
     NetworkInformation.NetworkStatusChanged += (s) => 
     { 
      if (InternetConnectionChanged != null) 
      { 
       var arg = new InternetConnectionChangedEventArgs(IsConnected); 
       InternetConnectionChanged(null, arg); 
      } 
     }; 
    } 

    public static bool IsConnected 
    { 
     get 
     { 
      var profile = NetworkInformation.GetInternetConnectionProfile(); 
      var isConnected = (profile != null 
       && profile.GetNetworkConnectivityLevel() == 
       NetworkConnectivityLevel.InternetAccess); 
      return isConnected; 
     } 
    } 
} 

所以在最後我調用函數來設置按鈕的顏色,但卻系統拋出一個異常,指出「應用程序正在使用線程編組爲一個不同的線程「

這是Main()構造函數中的代碼。

該應用拋出異常一旦網絡電纜被拉離..

Network.InternetConnectionChanged +=async(s,e)=> 
      { 
       await Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
       { 
        isInternetON=e.IsConnected; 
       }); 

       SetConnectionStaus(isInternetON); 


      }; 

我的猜測是我打電話一個線程從ANOTHER同時更新按鈕的顏色..... KINDLY幫助!

回答

0

您可以使用此代碼段更新來自非UI威脅UI屬性:

await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
{ 
//Do thing/change value here 
});