我可以在SignalR集线器中使用`ConfigureAwait(false)`,还是SignalR基础设施依赖于SynchronizationContext?

enz*_*nzi 4 c# signalr signalr-hub

我有一些执行I/O操作的集线器方法,我想异步调用它.

ConfigureAwait(false)在我的集线器方法中使用是否安全,或者SignalR是否需要捕获的SynchronizationContext用于请求信息或类似的东西?

    public async Task<Response> Save() {
        // do some prep work
        var response = await SaveThingsAsync().ConfigureAwait(false);
        // do something with response
        return response;
    }
Run Code Online (Sandbox Code Playgroud)

为了澄清:我的代码不需要线程文化或SynchronizationContext中存储的任何其他内容.
我担心的是SignalR服务器代码可能在那里存储信息,例如客户端ID,请求信息等,如果从不同的线程继续执行异步方法,它可能无法访问.

当我测试我的方法它似乎工作正常,但这并不能证明任何必要.

usr*_*usr 5

ConfigureAwait不会删除同步上下文.它只会导致任务完成继续不使用当前的同步上下文.

如果当前异步方法的其余部分不依赖于同步上下文,则始终可以安全使用.强调方法而不是线程.