繁体   English   中英

WP7应用程序无一例外地终止,数据绑定?

[英]WP7 Application Terminates with no exception, Databinding?

我有一个在启动时会发出多个HttpRequest的应用程序。 在尝试将大量UI处理移至另一个类以尝试成为更多MVVM应用程序之前,它运行良好。 现在,当我用数据加载页面时,我的应用程序毫无例外地崩溃/终止。

这种终止的主要来源(我相信)是我在为应用程序的RootFrame设置ViewModel的地方,以便可以在xaml绑定中引用它的类。

    (App.Current as App).RootFrame.DataContext = (App.Current as App).ViewModel;

没有此应用程序将启动,但随后我的数据都不会绑定到该页面。 我猜想有一些异步Http调用正在更改ViewModel,同时它试图将ViewModel设置为RootFrame的数据上下文。 我不确定这是否会导致这种终止,但我只是在猜测。

我很确定这部分是导致错误的原因,因为在它关闭之后,应用程序刚刚关闭,这是输出:

    'UI Task' (Managed): Loaded 'mscorlib.dll'
    'UI Task' (Managed): Loaded 'System.Windows.RuntimeHost.dll'
    'UI Task' (Managed): Loaded 'System.dll'
    'UI Task' (Managed): Loaded 'System.Windows.dll'
    'UI Task' (Managed): Loaded 'System.Net.dll'
    'UI Task' (Managed): Loaded 'System.Core.dll'
    'UI Task' (Managed): Loaded 'System.Xml.dll'
    'UI Task' (Managed): Loaded '\Applications\Install\CCB2E631-D1D5-4AB0-B253-7B6CF6367D16\Install\ParkQuest.dll', Symbols loaded.
    'UI Task' (Managed): Loaded 'Microsoft.Phone.dll'
    'UI Task' (Managed): Loaded 'Microsoft.Phone.Interop.dll'
    'UI Task' (Managed): Loaded 'Microsoft.Xna.Framework.dll'
    'UI Task' (Managed): Loaded '\Applications\Install\CCB2E631-D1D5-4AB0-B253-7B6CF6367D16\Install\Facebook.dll'
    'UI Task' (Managed): Loaded '\Applications\Install\CCB2E631-D1D5-4AB0-B253-7B6CF6367D16\Install\System.Windows.Interactivity.dll'
    'UI Task' (Managed): Loaded '\Applications\Install\CCB2E631-D1D5-4AB0-B253-7B6CF6367D16\Install\Microsoft.Expression.Interactions.dll'
    'UI Task' (Managed): Loaded 'System.Runtime.Serialization.dll'
    'UI Task' (Managed): Loaded '\Applications\Install\CCB2E631-D1D5-4AB0-B253-7B6CF6367D16\Install\Microsoft.Phone.Controls.Toolkit.dll'
    The thread '<No Name>' (0x1af811be) has exited with code 0 (0x0).
    The thread '<No Name>' (0x1ada0ebe) has exited with code 0 (0x0).
    The thread '<No Name>' (0x1a9c105a) has exited with code 0 (0x0).
    The program '[457643138] UI Task: Managed' has exited with code 0 (0x0).

仅供参考,我的启动对象不是问题,正如我所看到的那样。

预先感谢您的有用建议,如果您认为有更好的方法可以实现数据绑定,请告诉我。

另外,如果您需要任何其他信息来帮助您解答此问题,请不要犹豫。

我认为您可能在时间安排上有问题...

也许您应该实现一些基本的日志记录(请求开始和完成,..),以便更好地了解问题。

我已经看到使用WebClient和不同的并行请求的一些问题,也许您应该检查一下。 据我所知,WebClient回调使用UI威胁,这在提早发生时也可能是个问题(可能是您的VM启动请求并被提早提起)。

我不知道这是否有帮助,但是通常我会在后面的代码中执行此操作以设置视图的ViewModel。

public MainPage()
{
    InitializeComponent();
    MainPageVMProperty = new ViewModels.MainPageViewModel();
}

public ViewModels.MainPageViewModel MainPageVMProperty { get; set; }

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    LayoutRoot.DataContext = MainPageVMProperty;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM