WP7应用程序终止,没有例外,数据绑定?

时间:2012-06-12 00:50:41

标签: c# windows-phone-7 silverlight-4.0

我有和应用程序在启动时我正在制作多个HttpRequests。在尝试将大量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).

仅供参考我的初创对象不是问题,因为我看到它与某些人有关。

提前感谢您的有用建议,如果您认为我应该更好地实施数据绑定,请告知我们。

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

2 个答案:

答案 0 :(得分:1)

我想你可能在时间上有些问题......

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

我已经看到使用WebClient和不同并行请求的一些问题,也许您应该检查一下。据我所知,WebClient回调使用了UI威胁,这可能是一个问题,当它发生在早期时(可能是当你的VM启动请求并获得初期的初始化)...

答案 1 :(得分:0)

我不知道这是否有帮助,但我通常在后面的代码中为视图设置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;
}