private void startReceiving () { xxxx _receivingExited = new ManualResetEvent (false); Action receive = () => WebSocketFrame.ReadFrameAsync (_stream, false, frame => { if (!processReceivedFrame (frame) || _readyState == WebSocketState.Closed) { var exited = _receivingExited; if (exited != null) exited.Set (); return;
}
// Receive next asap because the Ping or Close needs a response to it.
receive ();
xxxx
message ();
},
xxxx
);
receive ();
}
private bool send (Opcode opcode, Stream stream)
{
lock (_forSend) {www.laipuhuo.com.
var src = stream;
var compressed = false;
var sent = false;
xxxxx
sent = send (opcode, stream, compressed);
xxxxx
return sent;
}
}
public interface www.laipuhuo.com.
IDistributedLock
{ ///
/// <summary>
/// 释放分布式锁。
/// </summary>
/// <param name="resourceKey">要释放的资源标识。</param>
Task ReleaseLockAsync(string resourceKey);
}