0

我已将 BugSense 添加到我的 Windows Phone 应用程序并相应地修改了 app.xaml.cs。但是,我知道有些用户遇到了崩溃,但 BugSense 没有看到它。BugSense 可以查看新会话和其他内容,因此我知道许可证是正确的。

我相信崩溃发生在这段代码中,尤其是我认为的 webclient。我可以在此代码中添加什么,以便在发生某些事情时,BugSense 会报告它?

 private void LongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        LongListSelector selector = sender as LongListSelector;

        // verifying our sender is actually a LongListSelector
        if (selector == null)
            return;

        SoundData data = selector.SelectedItem as SoundData;

        // verifying our sender is actually SoundData
        if (data == null)
            return;


        if (data.IsDownloaded)
        {
            this.PlaySound(IsolatedStorageFile.GetUserStoreForApplication().OpenFile(data.SavePath, FileMode.Open, FileAccess.Read, FileShare.Read));
        }
        else
        {
            if (!SimpleIoc.Default.GetInstance<INetworkService>().IsConnectionAvailable)
            {
                MessageBox.Show("You need an internet connection to download this sound.");
            }
            else
            {
                WebClient client = new WebClient();

                client.DownloadProgressChanged += (senderClient, args) =>
                    {
                        Dispatcher.BeginInvoke(() =>
                            {
                                data.DownloadProgress = args.ProgressPercentage;
                            });
                    };

                client.OpenReadCompleted += (senderClient, args) =>
                {
                    using (IsolatedStorageFileStream fileStream = IsolatedStorageFile.GetUserStoreForApplication().CreateFile(data.SavePath))
                    {
                        args.Result.Seek(0, SeekOrigin.Begin);
                        args.Result.CopyTo(fileStream);

                        this.PlaySound(fileStream);
                        data.Status = DownloadStatus.Downloaded;
                    }

                    args.Result.Close();
                };

                client.OpenReadAsync(new Uri(data.FilePath));
                data.Status = DownloadStatus.Downloading;
            }
        }

        selector.SelectedItem = null;
    }
4

1 回答 1

0

我自己刚刚开始在我的 WP8 应用程序中使用 BugSense,我印象深刻的是它如何在 App.xaml.cs 文件中仅使用一行代码就捕获未处理的异常:

public App()
{
    BugSenseHandler.Instance.InitAndStartSession(new ExceptionManager(Current), RootFrame, "YourBugSenseApiKey");
    ...
}

因此,根据我的经验,BugSense 应该可以为您捕获这些异常,而无需您编写任何额外的代码。

你怎么知道这些崩溃?它来自 Windows Phone 开发中心吗?如果是这样,那么您可能仍然会看到在您添加 BugSense 之前安装了旧版本应用程序的用户报告的崩溃。

我发现在启动时从应用程序本身检查新的应用程序版本并提醒用户是一个很好的方法,可以让人们保持最新状态。许多用户可能会长时间不访问 Windows Phone 商店,即便如此,他们也可能不会费心将您的应用程序更新到最新版本,因此很有可能您有很多用户在使用旧版本。

于 2014-07-08T00:56:46.523 回答