|
|
@ -277,7 +277,7 @@ namespace Microsoft.AspNet.SignalR.Messaging
|
|
|
|
// if the client is very slow then this invoke call might not end quickly and this will make the CPU
|
|
|
|
// if the client is very slow then this invoke call might not end quickly and this will make the CPU
|
|
|
|
// hot waiting for the task to return.
|
|
|
|
// hot waiting for the task to return.
|
|
|
|
|
|
|
|
|
|
|
|
var spinWait = new SpinWait();
|
|
|
|
int disposeRetryCount = 0;
|
|
|
|
|
|
|
|
|
|
|
|
while (true)
|
|
|
|
while (true)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -287,7 +287,7 @@ namespace Microsoft.AspNet.SignalR.Messaging
|
|
|
|
SubscriptionState.Idle);
|
|
|
|
SubscriptionState.Idle);
|
|
|
|
|
|
|
|
|
|
|
|
// If we're not working then stop
|
|
|
|
// If we're not working then stop
|
|
|
|
if (state != SubscriptionState.InvokingCallback)
|
|
|
|
if (state != SubscriptionState.InvokingCallback || disposeRetryCount ++ > 10)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (state != SubscriptionState.Disposed)
|
|
|
|
if (state != SubscriptionState.Disposed)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -305,7 +305,7 @@ namespace Microsoft.AspNet.SignalR.Messaging
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
spinWait.SpinOnce();
|
|
|
|
Thread.Sleep(500);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|