使用库Сatel 最新版本(3.8.1 beta)。
如何从对话窗口使用 TAP 方法?
例子。在主 ViewModel 中调用方法
private bool ShowDialogWindow()
{
var typeFactory = TypeFactory.Default ;
var vm = typeFactory.CreateInstanceWithParametersAndAutoCompletion<LoginWindowViewModel>();
return _uiVisualizerService.ShowDialog(vm) ?? false;
}
在 LoginWindowViewModel 我有命令(也可以尝试 AsynchronousCommand),它被称为方法
public async Task<int> Test(string login, string password)
{
var a = await Task<int>.Factory.StartNew(() =>
{
using (var uow = new UnitOfWork<TSDbContext>())
{
var userRep = uow.GetRepository<IUserRepository>();
userRep.GetAll();
return 5;
}
});
a++;
return a;
}
只有在关闭对话框窗口时,我才从等待的方法中得到结果。锁出现在线
var uow = new UnitOfWork()
ConfigureAwait(false) - 无助于解决问题
当我删除 UnitOfWork - 方法有效
当我将方法代码更改为此 var d = TypeFactory.Default.CreateInstanceWithParameters(); 返回 5;
阻塞也在TypeFactory这一行重现...
根据服务,Catel 不允许出现在对话框中