![](/img/trans.png)
[英]Error `Async test method must have non-void return type` when upgrading from NUnit 2 to NUnit 3
[英]How to create an async method that can return the non-void value?
我嘗試編寫一個使用一些等待操作的方法的類。 這種情況使我將此方法定義為異步。 但是我不能從這種方法返回非空值。 在我的情況下是BitmapImage。 這是代碼
public sealed class Thumbnailer
{
public async BitmapImage GetThumbImageFromFile(StorageFile sourceFile)
{
StorageItemThumbnail thumb = await sourceFile.GetThumbnailAsync(Windows.Storage.FileProperties.ThumbnailMode.PicturesView, 600, Windows.Storage.FileProperties.ThumbnailOptions.UseCurrentScale);
IRandomAccessStream thumbStream = thumb;
BitmapImage thumbPict = new BitmapImage();
thumbPict.SetSource(thumbStream);
return thumbPict;
}
}
如何解決這個問題?
但是我不能從這種方法返回非空值
是的,可以,但是對於某些T
,它必須是Task
或Task<T>
。 因此,您可以將方法更改為:
public async Task<BitmapImage> GetThumbImageFromFile(StorageFile sourceFile)
異步方法的全部性質是您可以調用它,並且控制(通常)將在該方法的整個主體完成之前返回給調用者-因此,將返回一個任務,以表明以后可以得到結果的承諾在 。 通過時間控制返回給調用者, 沒有任何BitmapImage
返回。 與任務, 可用時調用者可以獲取圖像。 (通常,異步方法是由其他異步方法調用的,當然,您可以等待返回的任務來獲取值。)
在Stack Overflow答案中很難簡潔地描述async,但是我建議您回過頭來重新從頭開始閱讀async / await-重要的是,您應該先了解其基本性質,然后再進行深入研究。 MSDN異步頁面是一個很好的起點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.