首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >UWP Mvvm棱镜ConfirgureContainer问题

UWP Mvvm棱镜ConfirgureContainer问题
EN

Stack Overflow用户
提问于 2018-11-06 03:55:18
回答 2查看 79关注 0票数 0

我在一个UWP应用程序中使用Prism。中的每个视图模型都注册了一些启动args

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    protected override async void ConfigureContainer()

我添加了异步关键字,因为我想初始化一些数据库连接,这些连接在ConfigureContainer()中是可使用的。但现在我注意到,应用程序启动(有时)时,启动时会对启动ags进行安装,从而导致null ref异常。我不应该在这个方法中初始化任何连接吗?为什么应用程序不在ConfigureContainer()上等待?当应用程序启动时,我应该将异步初始化方法调用放在哪里?这是方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 protected override async void ConfigureContainer()
    {


        // register a singleton using Container.RegisterType<IInterface, Type>(new ContainerControlledLifetimeManager());
        base.ConfigureContainer();
        Container.RegisterInstance<IResourceLoader>(new ResourceLoaderAdapter(new ResourceLoader()));
        DocumentClient client = new DocumentClient(new Uri("https://docdb.etc/"),
             "my key", new ConnectionPolicy() { ConnectionMode = ConnectionMode.Direct });
        try
        {
            await client.OpenAsync();
        }
        catch (Exception ex)
        {

            throw new Exception("DocumentClient client could not open");
        }
        IDataAccessBM _db = new DataAccessDocDb(client, "ct", "ops");
        AddressSearch addresSearcher = new AddressSearch(_db, 4);
        StartUpArgs startUpArgs = new StartUpArgs
        {
            postCodeApiKey = "anotherKey",
            db = _db,
            fid = "bridge cars",
            dialogService = new DialogService(),
            addressSearcher = addresSearcher
        };
        startUpArgs.zoneSet = await _db.ZoneSetGetActiveAsync("another key");
        Container.RegisterInstance(startUpArgs);
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-06 05:52:31

不要将初始化代码放入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 protected override  void ConfigureContainer()

放进去:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 protected override async Task OnInitializeAsync(IActivatedEventArgs args)

容器可以从那里访问,并且方法是异步的。

票数 0
EN

Stack Overflow用户

发布于 2018-11-06 05:41:49

我不应该在这个方法中初始化任何连接吗?

至少不是异步的。我宁愿创建一个(可能是异步的)按需创建连接的ConnectionFactory

为什么应用程序不等待ConfigureContainer()?

因为一个人不能await void。这就是为什么不鼓励使用async void .Task in async Task才是awaited,而不是async

当应用程序启动时,我应该将异步初始化方法调用放在哪里?

没有像async构造函数或async new这样的东西。在这里探索您的选择的一个良好开端是这篇文章是斯蒂芬·克利里写的

Container.RegisterInstance<IResourceLoader>(new ResourceLoaderAdapter(new ResourceLoader()));

注册实例是丑陋的,而且大多数情况下都是不必要的(这就是一个例子)。如果您重构代码以让容器完成其工作,异步初始化问题就会消失。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53171411

复制
相关文章
win10 uwp MVVM入门
MVVM 是一个强大的架构,基本从 WPF 开始,wr(我说的就是微软)就提倡使用 MVVM。它可以将界面和后台分离,让开发人员可以不关心界面是怎样,全心投入到后台代码编写中。 然后在编写完后台代码后,可以快速和界面设计师做出来的界面绑定到一起,即使频繁修改界面也几乎不需要去修改后台代码。 更让人喜欢的是,他可以让我们简单地进行单元测试,因为我们可以不打开界面进行测试功能,方便了我们的测试开发。 UWP 虽然可以直接在xaml.cs 写逻辑但是我们是推荐使用 MVVM 框架,写一个自己的框架也很简单。 本文主要:如何在 UWP 使用 MVVM,如何做一个自己的框架。
林德熙
2018/09/19
2K0
win10 uwp MVVM入门
win10 uwp MVVM 语义耦合
最近在我写的框架,小伙伴告诉我,可能有语义耦合,那么本文就来告诉大家,为什么会出现语言耦合
林德熙
2018/09/19
3570
win10 uwp MVVM 语义耦合
win10 uwp MVVM 语义耦合
最近在我写的框架,小伙伴告诉我,可能有语义耦合,那么本文就来告诉大家,为什么会出现语言耦合
林德熙
2022/08/04
2410
win10 uwp MVVM 轻量框架
如果在开发过程,遇到多个页面之间,需要传输信息,那么可能遇到设计的问题。如果因为一个页面内包含多个子页面和多个子页面之间的通信问题找不到一个好的解决方法,那么请看本文。如果因为ViewModel代码越来越多烦恼,请试试本文提供的框架。 本文介绍我做的框架,这是一个轻量的框架,可以同时使用其它的框架,用于多个页面之间,多个 ViewModel 之间的通信。
林德熙
2022/08/04
8650
win10 uwp MVVM 轻量框架
如果在开发过程,遇到多个页面之间,需要传输信息,那么可能遇到设计的问题。如果因为一个页面内包含多个子页面和多个子页面之间的通信问题找不到一个好的解决方法,那么请看本文。如果因为ViewModel代码越来越多烦恼,请试试本文提供的框架。 本文介绍我做的框架,这是一个轻量的框架,可以同时使用其它的框架,用于多个页面之间,多个 ViewModel 之间的通信。
林德熙
2018/09/19
1.2K0
win10 uwp MVVM 轻量框架
win10 uwp 轻量级 MVVM 框架入门 2.1.5.3199
一个好的框架是不需要写教程大家看到就会用,但是本金鱼没有那么好的技术,所以需要写很长的博客告诉大家如何使用我的框架。
林德熙
2018/09/19
1.3K0
win10 uwp 轻量级 MVVM 框架入门 2.1.5.3199
.NET 基金会项目介绍-Telerik UI for UWP
Telerik UI for UWP 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
8950
.NET 基金会项目介绍-UWP Community Toolkit
UWP Community Toolkit 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
4780
.NET 基金会项目介绍-Xamarin.Auth
Xamarin.Auth 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
7210
.NET 基金会项目介绍-MVVM Light Toolkit
MVVM Light Toolkit 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
1K0
.NET 基金会项目介绍-MimeKit
MimeKit 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
1.2K0
.NET 基金会项目介绍-AutoMapper
AutoMapper 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
6060
.NET 基金会项目介绍-Humanizer
Humanizer 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
8110
.NET 基金会项目介绍-Windows Template Studio
Windows Template Studio 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
7850
[WPF] 使用 MVVM Toolkit 构建 MVVM 程序
微软虽然提出了 MVVM,但又没有提供一个官方的 MVVM 库(多年前有过 Prism,但已经离家出走了)。每次有人提起 MVVM 库,有些人会推荐 Prism(例如我),有些人会推荐 MVVMLight。可是现在 Prism 已经决定不再支持 UWP , 而 MVVMLight 又不再更新,在这左右为难的时候 Windows Community Toolkit 挺身而出发布了 MVVM Toolkit。 MVVM Toolkit 延续了 MVVMLight 的风格,是一个轻量级的组件,而且它基于 .NET Standard 2.0,可用于UWP, WinForms, WPF, Xamarin, Uno 等多个平台。相比它的前身 MVVMLight,它有以下特点:
dino.c
2021/08/24
2.5K0
.NET 基金会项目介绍-MvvmCross
MvvmCross 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
1.6K0
.NET 基金会项目介绍-Prism
Prism 是一个开发框架,它为实现可维护的、可扩展的、可测试的 XAML 应用程序提供助力,可以应用于 WPF、 Xamarin、 Windows Store 应用和 Windows 10 UWP 应用。
newbe36524
2020/03/16
1.4K0
.NET 基金会项目介绍-Windows Presentation Foundation WPF
Windows Presentation Foundation WPF 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
1.2K0
.NET 基金会项目介绍-DotVVM: Component-based MVVM framework for ASP.NET
DotVVM: Component-based MVVM framework for ASP.NET 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
1.2K0
.NET 基金会项目介绍-.NET Micro Framework
.NET Micro Framework 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
1.3K0

相似问题

适用于UWP应用的棱镜与mvvm光

21

WPF + MvvM +棱镜

20

棱镜MVVM -模块

11

UWP和棱镜MEF

10

UWP棱镜视图模型

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文