[英]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.