地铁 c# 中的虚拟异步方法



我想定义一个虚拟方法,该方法在基类中不是异步的,但在派生类中是异步的,调用者使用委托调用它(实际上它是一个由屏幕上的按钮激活的ICommand)我该怎么做。

public class BaseClass
{
    BIONESSBindingCommand mLogoffCommand;
    public ICommand LogoffCommand
    {
        get
        {
            if (mLogoffCommand == null)
            {
                mLogoffCommand = new BIONESSBindingCommand(
                    Param => Logoff(), //Command DoWork
                    Param => true); //Always can execute
            }
            return mLogoffCommand;
        }
    }
    public virtual Task Logoff()
    {
        DoLogoff();
        return null; //???
    }
}
public class DerivedClass : BaseClass
{
    public override async Task Logoff()
    {
        await SomeWoAsyncWork();
        base.Logoff(); //Has warninngs
    }
}

调用 Task.FromResult 获取完整的Task。此外,在派生类中await它(这将启用错误传播)。

public class BaseClass
{
  public virtual Task Logoff()
  {
    DoLogoff();
    return Task.FromResult(false);
  }
}
public class DerivedClass : BaseClass
{
  public override async Task Logoff()
  {
    await SomeWoAsyncWork();
    await base.Logoff();
  }
}

最新更新