测试服务在Windows 8.1 mvvm light app中不与DispatcherHelper一起使用

时间:2015-03-27 05:17:17

标签: windows-runtime windows-8.1 mvvm-light dispatcher

我有一堆方法可以在我的Windows 8.1运行时应用程序中加载数据。我正在使用MVVM Light 5.1.1.0。

我现在一直在努力弄清楚为什么样品,库存,项目都有工作测试服务以及为什么我永远无法让我的工作。事实证明,如果我删除了所有的DispatcherHelper调用,那么我的测试数据就会加载。

以下是我在View模型的Load方法中调用的众多内容之一的示例:

    private async Task LoadDriverStatuses()
    {
        var driverStatuses = await this._driverService.GetDriverStatuses();

        this.DriverStatuses = new ObservableCollection<DriverStatusVM>();

        foreach (var status in driverStatuses)
        {
            var driverStatusVM = new DriverStatusVM
            {
                DriverStatusId = status.Id,
                Name = status.Name
            };
            await DispatcherHelper.RunAsync(() =>
            {
                this.DriverStatuses.Add(driverStatusVM);
            });
        }
    }

如果我在视图模型中的任何地方注释掉DispatcherHelper.RunAsync()/ CheckBeginInvokeOnUI()行,我的测试数据将加载到设计器中。不幸的是,应用程序只能正确地完全加载一次。一旦我尝试更改驱动程序状态,我就会得到一个“编组线程访问错误”#39;这是因为所有这些列表都是在不同的线程上创建的。

我想知道是否有一种快速解决方法,或者我是否需要继续使用&#39; if(this.IsInDesignMode)&#39;在我的视图中阻止模型构造函数并删除所有DispatcherHelper。

0 个答案:

没有答案