SignalR的线程化行为

时间:2014-12-21 11:40:40

标签: multithreading signalr

我的ASP.NET服务器上有一个SignalR Hub,我的JavaScript页面中有一个监听signalR客户端。

当我将消息从服​​务器中心推送到我的客户端时,代码是否等待所有字节都已发送,然后继续进行,或者是否在内部将其发送到单独的线程中?

例如,请考虑此服务器代码(c#)。

foreach (string hubUserId in hubUserIds)
{
    context.Clients.Client(hubUserId).broadcastMessage('this could be a large byte array');
}

我目前没有遇到任何延迟发送消息的情况,而且通过观察它似乎还没有等到数据被推出。但我可能是错的。

如果它没有产生一个线程,我可以自己安全吗?

1 个答案:

答案 0 :(得分:2)

在客户端上调用方法会返回一个等待的任务。

在您的示例中,您没有等待它 - 因此调用将是异步的,并且将在后台进行。

概述的官方文件位于:

http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server#asyncclient

您可以在ASP.Net中阅读有关async / await的更多信息:

http://www.asp.net/mvc/overview/performance/using-asynchronous-methods-in-aspnet-mvc-4