我的基类中有一个具有以下签名的方法.

public virtual async Task<TagBuilder> RenderAsync(int columnWidth)
{
    // ...
}

这可以很好地工作,但我有很多覆盖此方法的派生类.其中一些覆盖不使用await.

这给了我一个警告.

警告CS1998此异步方法缺少"等待"运算符,将同步运行.考虑使用‘aWait’运算符等待非阻塞API调用,或使用‘await Task.Run(...)’在后台线程上执行与CPU有关的工作.

解决这一警告的最佳方法是什么?首先,我不希望在我的代码中到处都是警告.但我的基班需要async分.我想以一种受制裁的方式解决这个问题,不会带来任何不必要的开销.

推荐答案

可以从派生类中删除async并使用Task.FromResult()返回值

基数:

public virtual async Task<TagBuilder> RenderAsync(int columnWidth)
{
    // ...
}

派生:

public override Task<TagBuilder> RenderAsync(int columnWidth)
{
    TagBuilder tag = GetTag();
    return Task.FromResult(tag);
}

Csharp相关问答推荐

Rx.Net -当关闭序列被触发时如何聚合消息并发出中间输出?

自定义JsonEditor,用于将SON序列化为抽象类

Unity如何在PlayerPrefs中保存数据?

. NET 8 HttpClient post参数将其情况更改为camel'

解析需要HttpClient和字符串的服务

安装附加的. exe与Visual Studio

Blazor Foreach仅渲染最后一种 colored颜色

如何使用C#Interop EXCEL创建度量衡

如何在C#中从正则表达式中匹配一些数字但排除一些常量(也是数字)

实体框架核心中的ComplexType和OwnsOne有什么不同?

LINQ to Entities中的加权平均值

.NET8Blazor-为什么Rapzor渲染在for循环之后显示?

如何使用IHostedService添加数据种子方法

在C#和HttpClient中使用REST API

Xamarin中出错.表单:应用程序的分部声明不能指定不同的基类

当要删除的子模型没有父模型的1:多属性时,如何告诉实体框架设置1:1 FK条目?

ASP.NET核心中的授权,如何在DbContext启动之前提供租用ID

如何对列表<;列表>;使用集合表达式?

.NET6最小API:操作.MapGet之后的响应

MudBlazor MudTabs-->;选项卡内容高度