等到任务返回

本文关键字:返回 任务 | 更新日期: 2023-09-27 18:33:04

在方法返回之前,如何等待我的方法完成任务。

public async void  barcodescanner()
{
    var scanner = new ZXing.Mobile.MobileBarcodeScanner();
    barcode =  await scanner.Scan();
}   

scaner.Scan()的定义:

public Task<Result> Scan();

等到任务返回

您不能等待async void方法的结果 - 它明确是"即发即弃"行为。

如果要等待完成 - 返回Task并对其进行.Wait

public async Task  barcodescanner() {...}
barcodescanner().Wait(); 

笔记:

  • 同步等待异步方法可能会导致死锁,通常不建议这样做 - 因此风险自负。请参阅等待与任务.等待 - 死锁?了解详情
  • 返回
  • voidTask返回之间的区别 返回无效和返回任务有什么区别?答案。

你总是可以这样做:

public void barcodescanner()
{
    var scanner = new ZXing.Mobile.MobileBarcodeScanner();
    barcode =  scanner.Scan().Result;
}