C# mvvmlight windows 8 metro异步加载数据在viewmodel构造函数中

C# mvvmlight windows 8 metro异步加载数据在viewmodel构造函数中,c#,mvvm,microsoft-metro,winrt-async,C#,Mvvm,Microsoft Metro,Winrt Async,我正在metro应用程序中使用MVVMLight框架。我首先在ViewModel构造函数中加载数据,一切正常。在构建快结束时,我在app.xaml中引入了一些额外的异常处理 TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; 这就导致了很多错误,比如任务没有被正确地等待 我将ViewModel构造函数数据加载调用移动到我的pageloadstate方法中,并在那里等待它们,一切正常。然而

我正在metro应用程序中使用MVVMLight框架。我首先在ViewModel构造函数中加载数据,一切正常。在构建快结束时,我在app.xaml中引入了一些额外的异常处理

TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
这就导致了很多错误,比如任务没有被正确地等待

我将ViewModel构造函数数据加载调用移动到我的pageloadstate方法中,并在那里等待它们,一切正常。然而,我读到这可能是一种不好的做法

我是否应该以某种方式引入对ViewModel构造函数的异步调用?感兴趣的最佳实践可能是什么?也许我应该删除异常处理程序

这里也提出了类似的问题:
首先,有两条规则:

  • 确保等待所有
    任务
  • 除事件处理程序外,切勿写入
    async void

  • 如果处理好了,请检查是否仍有一些错误。很可能你已经犯了一些错误,但它们还没有出现。

    首先,有几条规则:

  • 确保等待所有
    任务
  • 除事件处理程序外,切勿写入
    async void

  • 如果处理好了,请检查是否仍有一些错误。很可能您已经有了一些错误,但它们还没有出现。

    不确定在LoadState中从何处看到数据调用load是一种不好的做法,在大多数情况下,您甚至无法在load state之前加载数据,因为您需要LoadState传递的任何参数。此外,即使参数的大小也是不需要的,我个人更喜欢在LoadState中加载数据,因为在构造函数中开始加载它意味着您将在加载页面时花费一些cpu时间,因此加载页面将花费更长的时间。我认为在构造函数中加载它的唯一原因是在设计时加载数据(因为将调用视图模型协构造函数,但不会调用LoadState),但为此,您只需添加一个条件(
    ViewModelBase.isIndesignModeratic
    )在设计时调用构造函数中的load不确定在哪里看到LoadState中的数据调用load是一种不好的做法,在大多数情况下,您甚至无法在load state之前加载数据,因为您需要LoadState传递的任何参数。此外,即使参数的大小也是不需要的,我个人更喜欢在LoadState中加载数据,因为在构造函数中开始加载它意味着您将在加载页面时花费一些cpu时间,因此加载页面将花费更长的时间。我认为在构造函数中加载它的唯一原因是在设计时加载数据(因为将调用视图模型协构造函数,但不会调用LoadState),但为此,您只需添加一个条件(
    ViewModelBase.isIndesignModeratic
    )要在设计时调用构造函数中的load

    我有几篇博客文章,您可能会觉得有用。我有几篇博客文章,您可能会觉得有用。我认为您是对的,我不记得在哪里看到在LoadState中加载数据是一种不好的做法。我使用的是MVVM轻型框架,在示例代码/模板中,他将数据加载到构造函数中。也许正是这一点让我提出了这个问题。我认为你是对的,我不记得我在哪里看到在LoadState中加载数据是一种糟糕的做法。我使用的是MVVM轻型框架,在示例代码/模板中,他将数据加载到构造函数中。也许正是这一点让我提出了这个问题。