簡體   English   中英

具有異步形式工廠的簡單注入器

[英]Simple Injector with Async Form Factories

背景

我正在創建一個具有“ AccountManagementView”表單的Winforms應用程序。 每次創建表單時,都會在執行長任務后立即執行。 我的目標是首先創建表單,然后進行創建,以便用戶可以在執行長任務時與表單進行交互。

解決方案(到目前為止)

到目前為止,我的策略是將表單的構造函數設為私有,而使用異步工廠方法創建表單。 創建表單后,工廠方法將啟動長任務。

public partial class AccountManagementView : Form, IAccountManagementView
{
    private AccountManagementView()
    {
        InitializeComponent();
    }

    public static async Task<AccountManagementView> CreateAsync()
    {
        AccountManagementView view = new AccountManagementView();
        await view.LongTask();
        return view;
    }

    private async Task LongTask()
    {
        await Task.Delay(5000);
        this.lblTitle.Text = "Account Management - Loaded";
    }
}

如何在IoC容器Simple Injector中注冊該工廠? 我試圖通過以下方式注冊表格:

container.RegisterSingleton<AccountManagementView>(AccountManagementView.CreateAsync());

通過這種嘗試,我收到以下錯誤消息:“無法從'System.Threading.Tasks.Task'轉換為'Dispatch.UI.Windows.Views.Account.AccountManagementView'”

嘗試將async Task<AccountManagementView> CreateAsync()更改為AccountManagementView CreateAsync()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM