我有和应用程序在启动时我正在制作多个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).
仅供参考我的初创对象不是问题,因为我看到它与某些人有关。
提前感谢您的有用建议,如果您认为我应该更好地实施数据绑定,请告知我们。
此外,如果您需要任何其他信息可以帮助您回答此问题,请不要犹豫。
答案 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;
}