我有一个异步方法:
public async Task<BitmapSource> GetBitmapAsync(double[] pixels);
让我们说我也有这个课程:
public class PixelData
{
public double[] Pixels { get; }
}
我现在想要创建一个生成BitmapSource
输出的便捷方法,使用上面的异步方法来完成工作。我可以提出至少三种方法来做到这一点,但对于我来说,从效率和可靠性的角度来看,我应该选择哪一种方法。
有人建议吗?以下每种方法的优点和缺点是什么?
选项A 创建一个返回Result
的{{1}}的同步方法:
Task
选项B 创建一个返回public BitmapSource GetBitmap(PixelData pixelData)
{
return GetBitmapAsync(pixelData.Pixels).Result;
}
的同步(或它是异步?)方法:
Task<BitmapSource>
选项C 创建一个明确使用public Task<BitmapSource> GetBitmap(PixelData pixelData)
{
return GetBitmapAsync(pixelData.Pixels);
}
的异步方法:
await
答案 0 :(得分:6)
我认为你过度思考了这一点。
你有一个方法可以返回恰好是Task<T>
的类型。您需要一种方法,该方法采用不同类型的参数并传递给原始方法。因此选项B很好:
public Task<BitmapSource> GetBitmap(PixelData pixelData)
{
return GetBitmapAsync(pixelData.Pixels);
}
该方法应该被称为GetBitmapAsync
。
选项A将是公开方法的同步(阻塞)版本的方法。
选项C实际上没有达到比选项B更多的东西。