/// <summary>
 /// </summary>
 /// <param name="a_clientConfig"></param>
 /// <param name="a_streamCreator"></param>
 /// <example>
 /// var config = new VncConfig("192.168.1.1", 5900, "password", true);
 /// var client = new VncClient(config, (s) => new BufferedStream(new NetworkStream(s)), (s) => new NetworkStream(s));
 /// </example>
 public VncClient(VncConfig a_clientConfig, Func <Socket, Stream> a_readStreamCreator, Func <Socket, Stream> a_writeStreamCreator)
 {
     ClientConfig         = a_clientConfig;
     m_readStreamCreator  = a_readStreamCreator;
     m_writeStreamCreator = a_writeStreamCreator;
     CanvasLock           = new object();
 }
 /// <summary>
 /// </summary>
 /// <param name="a_clientConfig"></param>
 /// <param name="a_streamCreator"></param>
 /// <example>
 /// var config = new VncConfig("192.168.1.1", 5900, "password", true);
 /// var client = new VncClient(config);
 /// </example>
 public VncClient(VncConfig a_clientConfig) : this(a_clientConfig, (s) => new BufferedStream(new NetworkStream(s)), (s) => new NetworkStream(s))
 {
 }