运行系统任务栏消息WP8时出现空引用异常

本文关键字:引用 异常 任务栏 消息 WP8 运行系统 | 更新日期: 2023-09-27 18:20:07

当导航到时,我的WP8应用程序会在系统托盘中显示一条消息几秒钟。但我用于显示消息的以下方法总是抛出system.NullReferenceException:对象引用未设置为对象的实例。我很困惑为什么会这样,也许有人能指出问题所在?代码为:

    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:对象引用未设置为对象的实例。

位于ContosoSocial.StartPage。<>c_DisplayClass1.b_0(对象发送器,EventArgs参数)

位于MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex,Delegate handlerDelegate,Object sender,Object args)

在MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj、IntPtr unmanagedObjArgs、Int32 argsTypeIndex、Int32 actualArgsTypeIndex和String eventName)

运行系统任务栏消息WP8时出现空引用异常

您的问题是您没有在应用程序中创建ProgressIndicator的新实例。你必须实例化一个。在OnNavigatedTo方法中执行。

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

这应该能解决你的问题。