2016-02-03 42 views
-2

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

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

scaner.Scan()定義:

public Task<Result> Scan(); 
+0

感謝您的編輯,但代碼片段的插入而不能正常工作。它看起來已經改變了。我不認爲我需要一個負面的聲譽,因爲我沒有錯 – LibinJoseph

+0

你在哪個平臺上運行這個平臺? – Enigmativity

+0

@Enigmativity:Xamarin.Android – LibinJoseph

回答

2

你不能等待async void方法的結果 - 這是明確的 「發射後不管」 的行爲。

如果你想等待完成 - 返回Task.Wait

public async Task barcodescanner() {...} 

barcodescanner().Wait(); 

注:

+0

調用'Wait()'會使UI失效。 –

+0

@PauloMorgado不確定你的評論是關於什麼的。如果你問的問題 - 鏈接解釋是在答案... –

0

你總是可以做到這一點:

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

不會阻止用戶界面? –

+0

@PauloMorgado - 是的,這就是OP要求的。當然,這不是你應該做的。 – Enigmativity

+0

對不起,我的意思是「僵局」。 –