Witam.
Napisałem aplikację w której jest kilka wątków, które się razem komunikują ze sobą. Dla każdego wątku jest utworzony formularz składający się z textBoxa. Celem tego formularzu jest zbieranie wszystkich danych jakie otrzymał dany wątek( coś à la konsola diagnostyczna).
Scenriusz:
- Wątek otrzymał dane
- Watek wywołuje metode SetText dla formularza w celu aktualizacji danych w textBoxie.
W skrócie metoda wygląda tak:
public void setText(object obj)
{
if (InvokeRequired)
{
Utils.ObjectDelegate method = new Utils.ObjectDelegate(setText);
Invoke(method, obj);
return;
}
msg = (NetworkMessage)obj;
if (msg.messageType == "Discovery")
{
if (this.NeighborDiscoveryFiltr == true)
{
//sb - obiekt StringBuilder - zadeklarowany globalnie
sb.Append(DateTime.Now);
sb.Append("\t");
sb.Append(msg.messageType);
sb.Append(" ");
sb.Append(msg.senderTimeStampTicks);
sb.Append(" ");
sb.Append(msg.senderName);
sb.Append(" ");
sb.Append(msg.senderID);
sb.Append(" ");
sb.AppendLine();
this.textBox1.Text += sb.ToString();
sb.Clear();
//String text = msg.messageType + " " + msg.senderTimeStampTicks.ToString() + " " + msg.senderName.ToString() + " " + msg.senderID.ToString();
//this.textBox1.Text += DateTime.Now.ToString();
//this.textBox1.Text += "\t";
//this.textBox1.Text += text;
//this.textBox1.Text += "\r\n";
}
}
I tu pojawia się problem. Profiler, krzyczy, że operacja setText zajmuje prawie 50% czasu procesora, co raczej jest niedopuszczalne. Jakieś sugestie jak rozwiązać ten problem?