private void AddEntryToList(Channel channel, esTracePacket entry) { if (!IsDisposed) { lock (channel.TheLock) { channel.IncomingPackets.Add(entry); if (channel.IncomingPackets.Count == 1) { channel.NavBarItem.SmallImageIndex = 7; } if (channel.IncomingPackets.Count == 10) { // If called from a seperate thread, rejoin so that be can update form elements. if (InvokeRequired && !IsDisposed) { try { // onClosing messages may fail if the form is being disposed. Invoke((MethodInvoker)delegate() { AddEntriesToList(channel); }); } catch (ObjectDisposedException) { } } else { AddEntriesToList(channel); } } } } }
private void OnMessageReceived(object sender, XDMessageEventArgs e) { try { esTracePacket entry = new esTracePacket(); string[] fields = e.DataGram.Message.Split('±'); if (fields[0].Length > 0) { entry.TransactionId = Convert.ToInt32(fields[0]); } if (fields[1].Length > 0) { entry.ObjectType = fields[1]; } entry.CallStack = fields[2]; entry.ApplicationName = fields[3]; entry.TraceChannel = fields[4]; entry.ThreadId = Convert.ToInt32(fields[5]); entry.Sql = fields[6]; entry.Duration = Convert.ToInt64(fields[7]); entry.Ticks = Convert.ToInt64(fields[8]); entry.PacketOrder = Convert.ToInt64(fields[9]); entry.Action = fields[10]; entry.Syntax = fields[11]; entry.Exception = fields[12]; if (fields[13].Length > 0) { // Parse Parameters string[] parameters = fields[13].Split('«'); esParameter param = null; for (int i = 0; i < parameters.Length; i += 5) { if (param == null) param = new esParameter(); param.Name = parameters[i]; param.Direction = parameters[i + 1]; param.ParamType = parameters[i + 2]; if (parameters[i + 3] != "null") { param.BeforeValue = parameters[i + 3]; } if (parameters[i + 4] != "null") { param.AfterValue = parameters[i + 4]; } entry.SqlParameters.Add(param); param = null; } } switch (entry.TraceChannel) { case Channels.Channel_1: AddEntryToList(channel_1, entry); break; case Channels.Channel_2: AddEntryToList(channel_2, entry); break; case Channels.Channel_3: AddEntryToList(channel_3, entry); break; case Channels.Channel_4: AddEntryToList(channel_4, entry); break; case Channels.Channel_5: AddEntryToList(channel_5, entry); break; case Channels.Channel_6: AddEntryToList(channel_6, entry); break; case Channels.Channel_7: AddEntryToList(channel_7, entry); break; case Channels.Channel_8: AddEntryToList(channel_8, entry); break; case Channels.Channel_9: AddEntryToList(channel_9, entry); break; case Channels.Channel_10: AddEntryToList(channel_10, entry); break; } } catch { } }