Entwickler-Ecke
WinForms - C# Caesar-tool "ContextSwitchDeadlock"
karozocker - Sa 24.04.10 08:31
Titel: C# Caesar-tool "ContextSwitchDeadlock"
-vom User entfernt-
Kha - Sa 24.04.10 11:08
Du solltest hin und wieder Application.DoEvents aufrufen oder gleich einen BackgroundWorker einsetzen, dann wird sich Windows auch nicht beschweren, dass dein Programm scheinbar hängen geblieben ist ;) .
PS: Von wie viel Text reden wir hier überhaupt? Ich wette, dass die Interaktion mit den Controls 99% der Zeit frisst. Führe PerformStep nur bei jedem hundertsten Zeichen aus und schreibe nicht direkt in ausgabe.Text, sondern erst einmal in einen StringBuilder.
PPS: Das dürfte die dichteste Kommentierung sein, die ich jemals gesehen habe :zwinker: .
karozocker - Sa 24.04.10 21:16
-vom User entfernt-
Kha - Sa 24.04.10 23:16
Ach, doch so wenig - das nimmt meine TextBox gar nicht auf, sondern schneidet bei
short.MaxValue ab :lol: .
Wie du selbst beschreibst, wächst die Zeit quadratisch zur Textlänge; die Controls spielen also keine Rolle, es ist tatsächlich nur das Erstellen von immer längeren String-Instanzen durch +. Mit einem StringBuilder komme ich auf 10 Sekunden, von denen interessanterweise 9 auf
StringBuilder.ToString entfallen - das könntest du nur vermeiden, wenn du eine intelligentere TextBox baust, die nur den jeweils gerade angezeigten Text im Speicher hält, oder, falls es eigentlich darum geht, eine Datei zu übersetzen, direkt mit Streams arbeitest.
karozocker - Sa 24.04.10 23:25
-vom User entfernt-
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!