2014-09-01 48 views
0

我的WP8應用程序在導航到系統托盤時會在幾秒鐘內顯示一條消息。但是我用來顯示消息的以下方法總是拋出一個System.NullReferenceException:對象引用未設置爲對象的實例。 我很困惑這是爲什麼,也許有人可以指出什麼是錯的? 的代碼是:空引用異常正在運行系統托盤消息WP8

private void runSystrayMessage(bool isVisible, string text, int length) 
    { 
     try 
     { 
      SystemTray.ProgressIndicator.IsVisible = true; 
      SystemTray.ProgressIndicator.IsIndeterminate = isVisible; 
      SystemTray.ProgressIndicator.Text = text; 
     } 
     catch (Exception e) 
     { 
      Debug.WriteLine("Exception caught" + e); 
     } 


     DispatcherTimer timer = new DispatcherTimer(); 
     try 
     { 
      timer.Interval = TimeSpan.FromMilliseconds(length); 
     } 
     catch(ArgumentOutOfRangeException e) 
     { 
      Debug.WriteLine("ArgumentOutOfrangeException caught" + e); 
     } 

     timer.Tick += (sender, args) => 
     { 
      try 
      { 
       SystemTray.ProgressIndicator.IsVisible = false; 
      } 
      catch(System.InvalidOperationException e) 
      { 
       Debug.WriteLine("InvalidOperationException caught" + e); 
      } 
      timer.Stop(); 
     }; 
     timer.Start(); 
    } 

完整異常消息是:

System.NullReferenceException:對象不設置爲一個對象的一個​​實例。

at ContosoSocial.StartPage。 <> c__DisplayClass1.b__0(對象發件人,EventArgs參數)

在MS.Internal.CoreInvokeHandler.InvokeEventHandler(的Int32 typeIndex,代表handlerDelegate,對象發件人,對象參數)

在MS.Internal.JoltHelper.FireEvent( IntPtr的unmanagedObj,IntPtr的unmanagedObjArgs,的Int32 argsTypeIndex,的Int32 actualArgsTypeIndex,字符串eventName的)

+2

你爲什麼要捕捉這些例外?你基本上忽略了它們。如果其中一個例外意味着什麼是錯誤的呢? – 2014-09-01 02:54:48

+0

嘗試使用調試器 – 2014-09-01 03:26:57

回答

4

你的問題是你有沒有在你的應用程序創建的ProgressIndicator的新實例。你必須實例化一個。在OnNavigatedTo方法中執行此操作。

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    base.OnNavigatedTo(e); 
    SystemTray.ProgressIndicator = new ProgressIndicator(); 
} 

這應該可以解決您的問題。

+0

謝謝我已經在那裏嘗試過,但現在工作! – TripVoltage 2014-09-01 04:03:25