1675 {
1679 try
1680 {
1682 if (
thisPtr._isDisposed ||
thisPtr._state != WebSocketState.Open ||
thisPtr._closeOutputTask !=
null || !
thisPtr._keepAliveTracker.ShouldSendKeepAlive())
1683 {
1684 return;
1685 }
1687 try
1688 {
1691 {
1692 thisPtr.EnsureKeepAliveOperation();
1696 }
1697 }
1698 finally
1699 {
1701 {
1703 }
1705 thisPtr._keepAliveTask = null;
1706 }
1707 thisPtr._keepAliveTracker.ResetTimer();
1708 }
1710 {
1711 try
1712 {
1714 throw;
1715 }
1717 {
1719 }
1720 }
1721 finally
1722 {
1724 }
1725 }
static void ReleaseLock(object lockObject, ref bool lockTaken)
WebSocketBase(Stream innerStream, string subProtocol, TimeSpan keepAliveInterval, WebSocketBuffer internalBuffer)
static void Enter(object obj)
static CancellationToken None