空引用异常正在运行系统托盘消息WP8
我的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的)
你的问题是你有没有在你的应用程序创建的ProgressIndicator的新实例。你必须实例化一个。在OnNavigatedTo方法中执行此操作。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
SystemTray.ProgressIndicator = new ProgressIndicator();
}
这应该可以解决您的问题。
谢谢我已经在那里尝试过,但现在工作! – TripVoltage 2014-09-01 04:03:25
你为什么要捕捉这些例外?你基本上忽略了它们。如果其中一个例外意味着什么是错误的呢? – 2014-09-01 02:54:48
尝试使用调试器 – 2014-09-01 03:26:57