ライブラリСatel最新バージョン(3.8.1ベータ版)を使用。
ダイアログ ウィンドウから 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 = 新しい UnitOfWork()
ConfigureAwait(false) - 問題の解決には役立たない
UnitOfWork を削除すると、メソッドが機能します
メソッドコードをこれに変更すると var d = TypeFactory.Default.CreateInstanceWithParameters(); 5 を返します。
ブロッキングは TypeFactory の行でも再現されます...
サービスによっては、ダイアログ ボックスで Catel を使用できない場合があります