在异步方法中设置属性值

时间:2014-11-03 12:13:27

标签: .net asynchronous identity

我一直在发现微软身份的源代码,我在那里遇到了这段代码。

    public virtual Task SetSecurityStampAsync(TUser user, string stamp, CancellationToken cancellationToken = default(CancellationToken))
    {
        cancellationToken.ThrowIfCancellationRequested();
        ThrowIfDisposed();
        if (user == null)
        {
            throw new ArgumentNullException("user");
        }
        user.SecurityStamp = stamp;
        return Task.FromResult(0);
    }

我无法理解这样做的目的是什么。真的,为什么这样做呢? 该方法的主体甚至没有包含在任务中。 那么有人能告诉我这里发生了什么,它真的有意义吗? 我必须做同样的事情吗? 非常感谢。

P.S。 这是源代码库

link

2 个答案:

答案 0 :(得分:1)

它是一个虚方法,它应该允许覆盖实现以提供该方法的异步版本。

当前实现只设置一个属性,但是一个重写的实现可能需要做一些更复杂的事情,例如。把东西写到磁盘上,这应该是异步的。

答案 1 :(得分:0)

方法 返回一个包含值0的任务,该任务在Task.FromResult(0)中创建。您没有提供指向特定方法的链接,但我怀疑这只是一个默认的实现,并不需要异步执行任何操作。

我怀疑其他实现可以在设置安全时间戳时覆盖此操作以执行复杂逻辑,这些逻辑可能涉及对外部服务的调用,因此需要异步处理。