【问题标题】:QualifierValues.MapChanged Crashes AppQualifierValues.MapChanged 应用崩溃
【发布时间】:2016-03-30 19:35:30
【问题描述】:

我正在使用ResourceManager.Current.DefaultContext.QualifierValues.MapChanged 事件来检测我的应用程序运行时的语言变化。这工作正常,但我收到警告:

“ResourceManager.DefaultContext.get”已过时:“Windows 8.1 之后的版本可能会更改或无法使用 DefaultContext。相反,请使用 ResourceContext.GetForCurrentView。

我改为将我的应用程序切换到 ResourceContext.GetForCurrentView().QualifierValues.MapChanged,但该应用程序现在在启动时崩溃了。我没有遇到任何异常中断,我得到了一个单独的 Visual Studio 窗口,它会弹出以进行调试,唯一的选择是 Visual Studio 的新实例。

出了什么问题,我该如何解决?

失败的代码示例:

// App.xaml.cs

protected async override Task OnInitializeAsync( IActivatedEventArgs args )
{
    // Doesn't work. Yes this is in an async method...
    ResourceContext.GetForCurrentView().QualifierValues.MapChanged += QualifierValuesMapChanged;

    // But this is the next line and works fine.
    Dispatcher.Initialize();

    // This works just fine.
    ResourceContext.GetForViewIndependentUse().QualifierValues.MapChanged += QualifierValuesMapChanged;

    // So does this.
    ResourceManager.Current.DefaultContext.QualifierValues.MapChanged += QualifierValuesMapChanged;
}

【问题讨论】:

    标签: c# windows-runtime


    【解决方案1】:

    我在我创建的示例项目中尝试过,它有效! 我不知道你为什么会遇到这个错误。但你可以试试这个:

    try {
    
     var resourceContext = ResourceContext.GetForCurrentView();
     resourceContext.QualifierValues.MapChanged += QualifierValuesMapChanged;
    }
    catch(Exception ex){ 
    ex.Handled = true;
    Debug.Write(ex.Message);
    }
    

    也许我们捕捉到了异常,因为现在我们只是尝试一些事情,而不知道它是否会起作用。

    【讨论】:

    • 该回调永远不会发生。应用程序立即崩溃。
    • 答案已更新,您不能调试它或收到任何错误消息吗?请尝试使用 Dispatcher 订阅事件。调用 GetForCurrentView() 是有意义的
    • 事件订阅已经在 UI 线程上,所以通过调度程序运行它没有意义。它在启动时发生在App.xaml.cs。此外,如果它试图从非 UI 线程访问 UI 中的某些内容,它会崩溃的唯一方法。
    • 我的问题中没有提到调试信息。 I don't get any exception breaks and I get a separate Visual Studio window that pops up to debug and the only option is a new instance of Visual Studio.
    • 您能否将代码分享给我,以便我清楚地理解它?我对这个真的很感兴趣..
    猜你喜欢
    • 2014-07-21
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2011-03-31
    • 1970-01-01
    相关资源
    最近更新 更多