Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异步方法未运行后执行_C#_Wpf_Asynchronous_Mvvm_Task - Fatal编程技术网

C# 异步方法未运行后执行

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

我的ViewModel中有此方法:

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));
}