Как правильно выйти с анонимного делегата

public override async Task<DamageResult> TakeDamage(CharacterEntity target)
{
    if (target == null)
        return DamageResult.DamageFail;

    if (target.IsDead)
        return DamageResult.DamageFail;

    Formulas.CalculateTakeDamage(CharacterStats, target.CharacterStats);
    EventsHandler.ValidDeathTarget(target, async () =>
    {
        await target.BroadcastPacketAsync(CharacterDeath.ToPacket());
        await Task.Delay(1000);
    });

    // here

    StatusUpdate status = new StatusUpdate();
    status.AddAttribute(StatusUpdate.CurrentHealth, target.CharacterStats.CurrentHealth);
    status.AddAttribute(StatusUpdate.MaxHealth, target.CharacterStats.BaseHealth);

    await target.BroadcastPacketAsync(StatusUpdate.ToPacket(status, target), excludeYourself: false);

    return DamageResult.DamageNormal;
}

Если EventsHandler.ValidDeathTarget вернет true, выполняется синхронный анонимный делегат. Программа дальше пойдет работать? И как с этого делегата полностью завершить работу метода?


Ответы (0 шт):