【发布时间】:2020-08-11 11:20:37
【问题描述】:
所以我有一个 C# client,它调用 SignalR hub 的 method,集线器将返回 DateTime。
但我现在遇到的行为是 client 卡在 HubProxy.Invoke 上,最终记录以下内容:
Possible deadlock detected. A callback registered with "HubProxy.On" or "Connection.Received" has been executing for at least 10 seconds.
这是client的代码:
private async Task<long> GetCurrentServerTimeOffset()
{
DateTime requestDate = DateTime.Now;
DateTime serverDate = await hubProxy.Invoke<DateTime>("GetCurrentServerTime");
DateTime resultDate = DateTime.Now;
long offset = serverDate.Ticks - (requestDate.Ticks + resultDate.Ticks) / 2;
return offset;
}
这是Hub的代码:
public DateTime GetCurrentServerTime()
{
return DateTime.Now;
}
我已经尝试用hubProxy.Invoke<DateTime>("GetCurrentServerTime").Result 替换await hubProxy.Invoke<DateTime>("GetCurrentServerTime"),但它的行为相同...
有没有人知道我做错了什么,导致死机警告被记录?
EDIT1:如果我在hub 的return DateTime.Now; 中放置一个断点,则断点被命中,hub 将其响应发送到client 没有问题。
【问题讨论】:
标签: c# signalr deadlock signalr-hub signalr-client