如果不同客户端同时发出多个请求,则 Hub.Context.ConnectionId 的值会在处理程序执行期间发生变化。
假设我有 2 个客户端与客户端 ID A 和 B 连接,并且我的集线器上有一个名为 foo() 的方法。我从 A 向服务器发送一个调用 foo() 的请求,然后在处理来自 A 的请求的同时,我从 B 发送一个调用 foo() 的请求。在 A 的请求处理开始时 Hub.Context.ConnectionId == A 但在方法调用结束时 Hub.Context.ConnectionId == B。
我应该复制 Hub.Context 吗?我应该在什么时候执行此操作?
最佳答案
它不需要是线程安全的,因为 Hub 实例不是静态的,所以您不需要复制任何东西。
它们是每次调用创建的。因此客户端的每次调用都会创建一个新的 Hub 实例和 HubContext。
关于c# - 在 SignalR 中 Hub.Context 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10180052/