我的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));
}编辑:
public ServiceResult<IModuloNeotek> InitializeModulo(string dataSource, IModuloNeotek modulo, string nombreEmpresa)
{
ServiceResult<IModuloNeotek> sResult;
if (DatabaseExists(dataSource, Strings.GetDbName(nombreEmpresa, modulo.NombreModulo)))
{
sResult = new ServiceResult<IModuloNeotek>(null);
sResult.Error =
string.Format(
"El modulo {0} ya esta inicializado para esta empresa.",
modulo.NombreModulo);
return sResult;
}
SqlQueryResult qResult = new SqlQueryResult();
string connString = GenerateConnectionString(dataSource);
switch (modulo.NombreModulo)
{
case "Contabilidad":
qResult = ExecuteScript(connString, GetScriptStream(TipoModulo.Contabilidad, nombreEmpresa));
if (qResult.Result)
{
string query =
string.Format("INSERT INTO Modulos (NombreModulo, Inicializado, EmpresaId)" +
"VALUES ('{0}', 'true', (SELECT IdEmpresa FROM Empresas WHERE NombreEmpresa=" +
"'{1}')) ", modulo.NombreModulo, nombreEmpresa);
qResult = ExeCuteQuery(query, dataSource, Resources.MaterDbName);
if (qResult.Result)
{
sResult = new ServiceResult<IModuloNeotek>(modulo);
return sResult;
}
}
break;
case "Proveedores":
break;
case "Produccion":
break;
}
sResult = new ServiceResult<IModuloNeotek>(null);
sResult.Error = qResult.Error;
sResult.InnerError = qResult.InnerError;
return sResult;
}那么,为什么不继续执行呢?我尝试了所有的方法,从服务返回一个任务并在ViewModel中等待,没有返回Task.Run,只是任务,我不知道该做什么,有什么线索吗?谢谢
发布于 2016-04-13 22:27:55
尝试更改:
private async void InicializarModulo(IModuloNeotek modulo)至:
private async Task InicializarModulo(IModuloNeotek modulo)发布于 2016-04-13 23:16:02
您的服务呼叫不正确。它本身就是awaiting。
更新为not await。
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));
}https://stackoverflow.com/questions/36601100
复制相似问题