Hola, tengo una aplicación con un Form que contiene un par de TabPages dentro de un TabControl con dos RichTextBox a los cuales escribo a través de delegados; también tengo 3 Timers, uno cada 10 segundos y los otros dos cada 1 segundo, y por ultimo un control SerialPort a 19200bps y una conexión a un servidor MySQL.
Todo lo antes mencionado me esta consumiendo alrededor de 50MB de RAM, esto no lo veo mal, lo que si me sorprende es que consuma el 50% de los recurso del procesador (Pentium Dual Core E5300).
Mi pregunta es, ¿Hay alguna forma de saber que parte del programa es la que esta consumiendo tantos recursos del procesador?¿Que practicas se pueden implementar para reducir el consumo de procesador?
Edito:
Al parecer ocurre luego de un par de horas de funcionamiento, empiezo a sospechar que los RichTextBox, al llenarse, hacen que la aplicación consuma mas recursos.
El código que estoy usando en lo delegados es el siguiente:
Código vb:
Ver originalPrivate Sub PrintLog(ByVal NewText As String, Optional ByVal NewLine As Boolean = True)
If Me.InvokeRequired Then
Dim Txt As New PrintLogDelegate(AddressOf PrintLog)
Me.Invoke(Txt, New Object() {NewText})
Else
Dim FechaHora As String = ""
'If NewLine And LogRTB.TextLength > 1 Then 'Evita que se agregue un /r/n a la primera linea
If NewLine Then
FechaHora = GetFechaHora() & " | "
If LogRTB.TextLength > 1 Then
NewText = vbCrLf & FechaHora & NewText
Else
NewText = FechaHora & NewText
End If
End If
LogRTB.AppendText(NewText)
LogRTB.SaveFile(LogPath & ".log", RichTextBoxStreamType.PlainText)
If LogRTB.TextLength > 1000000 Then
LogRTB.Clear()
'Si supera el millon de caracteres renovar el nombre del archivo para que quede listo para el proximo
LogPath = Application.StartupPath & "\" & GetFechaHora().Replace(":", "")
End If
If LogAutoScrollChk.Checked Then
LogRTB.ScrollToCaret()
End If
End If
End Sub
¿Ustedes lo ven muy pesado?