protected virtual void Dispose(bool finalize) { if (_isDisposed) { return; } _isDisposed = true; if (_closeStreamOnDispose) { if (_sr != null) { _sr.Value.Dispose(); } if (_bsonReader != null) { _bsonReader.Close(); } } if (!ChoETLFrxBootstrap.IsSandboxEnvironment) { System.Threading.Thread.CurrentThread.CurrentCulture = _prevCultureInfo; } _closeStreamOnDispose = false; if (!finalize) { GC.SuppressFinalize(this); } }
private static T DeserializeObject <T>(byte[] bson) { using (var ms = new MemoryStream(bson)) { var bdr = new BsonDataReader(ms); var serializer = new JsonSerializer(); serializer.TypeNameHandling = TypeNameHandling.Objects; var result = serializer.Deserialize <T>(bdr); bdr.Close(); return(result); } }
void RecvFromServer() { TimeSpan ts; while (true) { if (!_loginSuccess) { Thread.Sleep(5); continue; } ts = DateTime.Now - receiveDataStartTime; if (ts.TotalSeconds > 5) { lock (receiveDataBuffer) { receiveDataBuffer.Clear(); } tcpClient.Close(); _isTcpConnected = false; _loginSuccess = false; this.Invoke(new Action(() => { btn_Connect.Text = "连接"; pictureBox1.Image = null; })); Thread.Sleep(5); continue; } if (receiveDataBuffer.Count == 0) { Thread.Sleep(5); continue; } try { List <byte[]> cmds = new List <byte[]>(); int removeCount = 0; byte[] buffers; lock (receiveDataBuffer) { buffers = receiveDataBuffer.ToArray(); } Package7E.UnPack(buffers, ref cmds, ref removeCount); if (removeCount > 0) { lock (receiveDataBuffer) { receiveDataBuffer.RemoveRange(0, removeCount); } } for (int i = 0; i < cmds.Count; i++) { BsonDataReader bsonDataReader = null; try { MemoryStream msShareData = new MemoryStream(cmds[i]); bsonDataReader = new BsonDataReader(msShareData); JsonSerializer jsonSerializer = new JsonSerializer(); ShareData shareData = jsonSerializer.Deserialize <ShareData>(bsonDataReader); switch (shareData.Type) { case "Text": ShowResult(shareData.TextData); break; case "Image": ShowImage(shareData.ImgData); break; default: break; } } catch (Exception ex) { } finally { if (bsonDataReader != null) { bsonDataReader.Close(); } } } } catch (Exception ex) { //Log.Error("RecvFromSlave Error", ex); } Thread.Sleep(5); } }