gpt4 book ai didi

c# - 从异步方法返回输出时推荐的方法签名?

转载 作者:可可西里 更新时间:2023-11-01 07:58:26 25 4
gpt4 key购买 nike

我有一个异步方法:

public async Task<BitmapSource> GetBitmapAsync(double[] pixels);

假设我也有这门课:

public class PixelData
{
public double[] Pixels { get; }
}

我现在想创建一个生成 BitmapSource 的便捷方法输出,使用上面的异步方法来完成工作。我至少可以想出三种方法来做到这一点,但从效率和可靠性的角度来看,我并不清楚应该选择哪一种。

有人可以指教吗?以下每种方法的优点和缺点是什么?

选项 A 创建一个返回 Result 的同步方法的 Task :

public BitmapSource GetBitmap(PixelData pixelData)
{
return GetBitmapAsync(pixelData.Pixels).Result;
}

选项 B 创建一个返回 Task<BitmapSource> 的同步(或异步?)方法:

public Task<BitmapSource> GetBitmap(PixelData pixelData)
{
return GetBitmapAsync(pixelData.Pixels);
}

选项 C 创建一个显式使用 await 的异步方法:

public async Task<BitmapSource> GetBitmapAsync(PixelData pixelData)
{
return await GetBitmapAsync(pixelData.Pixels);
}

最佳答案

我认为你想多了。

您有一个返回类型的方法恰好是 Task<T> .您想要一个采用不同类型参数并传递给原始方法的方法。所以选项 B 没问题:

public Task<BitmapSource> GetBitmap(PixelData pixelData)
{
return GetBitmapAsync(pixelData.Pixels);
}

该方法应称为 GetBitmapAsync虽然。

选项 A 将是公开该方法的同步(阻塞)版本的方式。

选项 C 实际上并没有比选项 B 多什么。

关于c# - 从异步方法返回输出时推荐的方法签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11860198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com