有你能做到几个方面:
async
/await
(如果你使用C#5)。您必须将方法返回类型更改为async Task
,然后使用await task1;
来等待任务的结果。这不会阻止当前线程。
task1.Wait()
阻塞,直到任务完成。
task1.ContinueWith
时间表,将在一次任务中执行的延续完成
我也建议你改变你的任务变成了Task<ResultadoExportacaoProdutos>
,即var task1 = Task.Factory.StartNew(() => Servico.ExportarProdutosPorArquivo(parametros));
。因为任务不会写入方法范围的变量,所以它更干净。
的async
/await
版本将随即成为
private async Task RealizarSolicitacao(ParametrosExportacaoProdutos parametros, FilialDaConfiguracao filial)
{
var resultado = await Task.Run(() => Servico.ExportarProdutosPorArquivo(parametros));
// do something with resultado
}
阻塞Wait
/Result
版本将是:
private void RealizarSolicitacao(ParametrosExportacaoProdutos parametros, FilialDaConfiguracao filial)
{
var task1 = Task.Run(() => Servico.ExportarProdutosPorArquivo(parametros));
var resultado = task1.Result;
// do something with resultado
}
这不会阻止该过程? – mtsys 2014-09-23 12:43:18