当前位置: 首页 > 知识库问答 >
问题:

C#无法用异步任务替换void

卜凯旋
2023-03-14

我有一个从实体框架类派生的类,如下所示。

internal class MyInitializer : CreateDatabaseIfNotExists<ConfigurationDbContext>
{
    protected override async void Seed(ConfigurationDbContext context)
    {
        await DbHelper.AddSampleDataAsync(context);
        base.Seed(context);
    }
}

当我将“void”更改为“异步任务”时,我得到以下编译器错误。

return type must be 'void' to match overridden member

async/Await最佳实践告诉您,几乎总是返回异步任务,而不是void。我只是想确保我在这里对void的使用是那些可以接受的使用void的场景之一。我还有别的选择吗?

共有1个答案

杭志泽
2023-03-14

在C#中,被重写的成员必须具有与其重写的方法完全相同的签名。simple不能用另一个返回类型不同的方法重写一个方法。

因为基类希望方法同步运行,所以在返回之前必须等待异步方法完成。

internal class MyInitializer : CreateDatabaseIfNotExists<ConfigurationDbContext>
{
    protected override void Seed(ConfigurationDbContext context)
    {
        DbHelper.AddSampleDataAsync(context).Wait();
        base.Seed(context);
    }
}
 类似资料:
  • 本文向大家介绍C#异步执行任务的方法,包括了C#异步执行任务的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#异步执行任务的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 8.2 使用异步任务 注意:本节所介绍的功能要求 vim 编译包括 +job 特性。 8.2.1 简单任务体验 前文说到,Vim 的异步任务主要是针对外部命令的。那我们就先以最简单最常见的系统命 令 ls 为例,其功能是列出当前目录下的文件,若在 Windows 操作系统下或可用 dir 命令代替。 首先请在 shell 中进入一个非空目录,便于实践,并在 shell 中执行如下命令: $ ls

  • 我想调用一个方法,从一个AsyncWork,从另一个类,我正在尝试这个 但我得到错误“。你能帮助我吗? 我的扩展活动:

  • 本文向大家介绍SpringBoot异步任务使用方法详解,包括了SpringBoot异步任务使用方法详解的使用技巧和注意事项,需要的朋友参考一下 步骤,如图所示: 1.添加异步任务业务类 2.添加测试控制器 3.添加启动类 4.右键项目Run As启动,访问url 结果: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我正在尝试使用以下代码: 是我在Android应用程序中使用的OAuth2Client的一部分。我得到这个错误: 我会提供一些帮助。 谢谢

  • 请纠正我做错的地方。代码如下: