C# 异步方法未运行后执行
我的ViewModel中有此方法:C# 异步方法未运行后执行,c#,wpf,asynchronous,mvvm,task,C#,Wpf,Asynchronous,Mvvm,Task,我的ViewModel中有此方法: private async void InicializarModulo(IModuloNeotek modulo) { var t = _service.InitializeModuloAsync(DataProvider.NombreInstanciaSqlServer, modulo, Empresa.NombreEmpresa); ServiceResult<IModuloNeotek> sResul
private async void InicializarModulo(IModuloNeotek modulo)
{
var t = _service.InitializeModuloAsync(DataProvider.NombreInstanciaSqlServer,
modulo, Empresa.NombreEmpresa);
ServiceResult<IModuloNeotek> sResult = await t;
if (sResult.HasErrors)// this never runs
MessageBox.Show("Error");
}
这是我的服务电话:
public async Task<ServiceResult<IModuloNeotek>> InitializeModuloAsync(string dataSource,
IModuloNeotek modulo, string nombreEmpresa)
{
return await Task.Run(() => InitializeModulo(dataSource, modulo, nombreEmpresa));
}
编辑:
那么,为什么不继续执行呢?我尝试了一切,从服务返回一个任务,并在ViewModel中等待,而不是返回任务。运行,只是任务,我不知道该怎么做,有什么线索吗?谢谢尝试更改:
private async void InicializarModulo(IModuloNeotek modulo)
致:
您的服务电话不正确。它已经在等待自己了 更新到不等待
我不知道发生了什么,我已经使用了相同的模式并工作了,现在它没有!试着调试代码并捕获任务内部的异常,方法是将Try{…code放在这里…}捕获异常ex{}。另外,主线程是否仍在运行,还是在任务完成之前退出?您可能需要等待任务完成,以便主线程继续运行。我怎么知道?我只知道代码没有访问no,没有捕获任何东西显示InitializeModulodataSource、modulo、Nombreempresa的定义OK,我的数据提供程序中有一个错误,不支持Sql Server名称,我修复了它,现在它工作了,但为什么我没有收到错误?我不明白,不知道你为什么没有出错。它们是“第一次机会例外”吗?通常情况下,它们在运行时不会中断。@LuchoMansilla-这是因为异常发生在InicializarModulo任务中,并且由于它不是主线程,并且没有任何东西可以捕捉到它,因此您不会提示发生了异常。
private async void InicializarModulo(IModuloNeotek modulo)
private async Task InicializarModulo(IModuloNeotek modulo)
private async void InicializarModulo(IModuloNeotek modulo)
{
var t = _service.InitializeModuloAsync(DataProvider.NombreInstanciaSqlServer, modulo, Empresa.NombreEmpresa);
ServiceResult<IModuloNeotek> sResult = await t;
if (sResult.HasErrors)// this never runs
MessageBox.Show("Error");
}
public Task<ServiceResult<IModuloNeotek>> InitializeModuloAsync(string dataSource, IModuloNeotek modulo, string nombreEmpresa)
{
return Task.Run(() => InitializeModulo(dataSource, modulo, nombreEmpresa));
}