Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 wp7:应用程序失败!不知道在哪里?_Visual Studio 2010_Windows Phone 7 - Fatal编程技术网

Visual studio 2010 wp7:应用程序失败!不知道在哪里?

Visual studio 2010 wp7:应用程序失败!不知道在哪里?,visual-studio-2010,windows-phone-7,Visual Studio 2010,Windows Phone 7,我想我已经在停用事件中将其缩小为以下代码: 事情是这样的。。。当我在代码中设置一个断点时,一切正常。应用程序不会失败。然而,当我去掉断点时,它失败了。我不明白的是为什么try/catch没有开火 我还应该注意,我对这个事件的所有内容都进行了注释,没有断点,应用程序运行良好。所以这是代码中的一些东西 是否可能是未保存对象的保存事件未完成,而当它尝试重新激活时,激活事件实际上是失败的事件?? private void Application_Deactivated(object sender, De

我想我已经在停用事件中将其缩小为以下代码:

事情是这样的。。。当我在代码中设置一个断点时,一切正常。应用程序不会失败。然而,当我去掉断点时,它失败了。我不明白的是为什么try/catch没有开火

我还应该注意,我对这个事件的所有内容都进行了注释,没有断点,应用程序运行良好。所以这是代码中的一些东西

是否可能是未保存对象的保存事件未完成,而当它尝试重新激活时,激活事件实际上是失败的事件??

private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
    //MessageBox.Show("deactivated");
    try
    {
        //if ((Application.Current as App).infoSaved == false)
        //{
        unsaved unSavedPillInfo = new unsaved();
        unSavedPillInfo.RXName = (Application.Current as App).appRXName;
        unSavedPillInfo.RXNumber = (Application.Current as App).appRXNumber;
        unSavedPillInfo.DosageNotes = (Application.Current as App).appDosageNotes;
        unSavedPillInfo.Generic = (Application.Current as App).appGeneric;
        unSavedPillInfo.Instructions = (Application.Current as App).appInstructions;
        unSavedPillInfo.Reason = (Application.Current as App).appReason;

        unSavedPillInfo.Quantity = (Application.Current as App).appQuantity;
        unSavedPillInfo.Refills = (Application.Current as App).appRefills;

        unSavedPillInfo.Doctor = (Application.Current as App).appDoctor;
        unSavedPillInfo.DoctorNumber = (Application.Current as App).appDoctorNumber;
        unSavedPillInfo.Pharmacy = (Application.Current as App).appPharmacy;
        unSavedPillInfo.PharmacyNumber = (Application.Current as App).appPharmacyNumber;

        unSavedPillInfo.OrigDate = (Application.Current as App).appOrigDate;
        unSavedPillInfo.ReorderReminder = (Application.Current as App).appReorderReminder;
        unSavedPillInfo.ReorderDate = (Application.Current as App).appReorderDate;
        unSavedPillInfo.ConsumptionFrequency = (Application.Current as App).appConsumptionFrequency;

        unSavedPillInfo.PerscriptionUpdated = (Application.Current as App).perscriptionUpdated;
        unSavedPillInfo.PerscriptionUpdated = (Application.Current as App).doctorUpdated;
        unSavedPillInfo.PerscriptionUpdated = (Application.Current as App).detailsUpdated;
        unSavedPillInfo.PerscriptionUpdated = (Application.Current as App).pharmacyUpdated;

        unSavedPillInfo.Save();
        //}
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString());
    }

}

这并不完美,但请尝试在每个EventHandler中放置一个Messagebox。这样你就可以知道每个人什么时候开火,看是否有人没有开火

此外,您可能希望经常卸载应用程序以清除隔离的存储。如果您继续在同一安装上运行,则会产生问题

编辑:是的,从我遇到的情况来看,如果没有正确保存到独立存储,应用程序可能会挂起。如果您没有正确地从隔离存储加载数据,也可能发生这种情况。您可能想分别尝试每种方法。使用messagebox确保其正确保存和加载,因为VisualStudio将退出当前调试会话

更新您应该做的是创建一个名为unsavedpraction的全局变量。现在,当用户选择处方时,为他们选择的处方分配全局变量“unsave”。注意:当应用程序停用时,您不应该分配属性,因为它很可能无法完全保存,从而导致应用程序挂起。相反,您只需将所选处方分配给全局变量,并将App.xaml.cs中的代码更改为以下内容:

public unsaved unsavedPrescription {get; set;}

private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
    //Open up IsolatedStorageSettings
    IsolatedStorageSettings settings = Isolated StorageSettings.ApplicationSettings;

    //Use a model to save prescription
        //So create a name/value pair to store the prescription in isolatedstorage
    //Notice we used the global variable
    settings["UnsavedPrescription"] = unsavedPrescription;
}

private void Application_Activated(object sender, ActivatedEventArgs e)
{
    //Now you can easily load the prescription you saved
    //I'm reassigning the global variable that will contain the savedprescription

    if(settings.TryGetValue("UnsavedPrescription", out prescription)
    {
        unsavedPrescription = prescription;
    }
}

这大大简化了加载和保存代码的过程。此外,您还可以使用MessageBox进行测试,就像我前面所说的,这虽然不专业,但效果很好。另外,当应用程序试图停用时,您也没有运行太多的东西。这种方法将在我测试它时起作用。你在上面做的方式看起来就像你在应用程序停用时运行了很多代码,这可能就是它挂起的原因。这也解释了为什么当您删除它时,一切正常。

我遇到了一个与您的问题类似的问题,它实际上与从IsolatedStorage本身保存/加载无关,而是与我在有限递归中设置/获取的属性有关。这导致应用程序在获取Catch语句之前终止

关闭调试器在属性上的单步执行可能是值得的: 工具->选项->调试器->跳过属性和运算符(仅限托管)

公共字典
{
得到
{
如果(_dictionary==null)
_字典=新字典();
返回字典;
}
设置
{
字典=值;
}
}

我在使用IsolatedStorage时,也曾遇到过一些问题。我建议您尝试注释掉代码,直到您能够确定问题的确切来源,然后发布该代码段,以便我们能够帮助您解决问题。@johnhforrest-我在这些事件中包装了一个try/catch块,现在没有断点,一切似乎都正常工作。idk。。。我觉得很奇怪。所以我想问题已经解决了,但我不知道为什么!:(如果您在没有重新启动仿真器的情况下对代码进行了更改,这可能是问题所在。关闭仿真器时,
IsolatedStorage
将被清除,因此您的程序可能一直在尝试以新格式或类似方式读取旧数据。很高兴您现在一切正常。您有机会吗主持整个项目?在app.xaml.cs文件中,你没有任何地方显示你保存/加载到
IsolatedStore
的位置。我确信在那里的某个地方发生了异常。你是否使用
DataContractSerializer
写入磁盘?@johnforrest-请参阅我的更新…因为调试器已被停用我的调试经历非常困难。有什么想法吗?谢谢你的想法。奇怪的是,当我在每个事件中加载/保存时都包装了一个try/catch,没有出现错误。那里肯定有错误,但调试器也没有捕获到它…@Jeff same这里。我唯一能知道的方法是messagebox是否分层。但没有出现错误。应用程序只是挂起。@Jeff您考虑过将数据保存到独立存储的其他方法吗?我使用了IsolatedStorageSettings,它通过键/值对保存值。请检查我的答案以获取更新。
public Dictionary<string, object> Dictionary
        {
            get
            {
                if (_dictionary == null)
                    _dictionary = new Dictionary<string, object>();
                return _dictionary;
            }
            set
            {
                Dictionary = value;
            }
        }