Autor |
Beitrag |
georgeboy
Beiträge: 211
|
Verfasst: Fr 15.01.21 10:52
Hallo zusammen, gibt es eine Möglichkeit, die maximale Stapelgrösse vom Haupt-Thread zu erhöhen ? Ich arbeite mit VS 2008 und VS 2019 C# .NET WinForms.
Moderiert von Th69: Topic aus WinForms verschoben am Fr 15.01.2021 um 14:06
|
|
jfheins
Beiträge: 918
Erhaltene Danke: 158
Win 10
VS 2013, VS2015
|
Verfasst: Fr 15.01.21 12:30
Ja, gibt es: How to change stack size for a .NET program?
Man muss wohl editbin nutzen, um die exe nachträglich zu ändern.
Alternativ kannst du deinen rekursiven (?) Code auch Umschreiben und einen Stack<T> nutzen anstatt den Callstack.
Moderiert von Th69: URL-Titel hinzugefügt.
Moderiert von Th69: C#-Tags hinzugefügt
|
|
georgeboy
Beiträge: 211
|
Verfasst: Fr 15.01.21 15:14
Da stelle ich die Funktion lieber in einen Thread: Thread(new ThreadStart("ThreadMethode"), StackSize);
Stack<T> geht natürlich auch. Danke!
Moderiert von Th69: C#-Tags hinzugefügt
|
|
Ralf Jansen
Beiträge: 4705
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 15.01.21 18:04
Mit editbin hättest du auch die Stacksize aller Threads beinflusst. Das eskaliert schnell.
Der Stack ist ja nicht begrenzt um uns Entwickler zu ärgern. Das hat Gründe.
Ein Überlegen ob es auch anders geht, ohne Rekursion bzw. ohne tiefe Rekursion, ist empfehlenswert.
|
|
georgeboy
Beiträge: 211
|
Verfasst: Sa 16.01.21 08:03
Meine Funktion ruft sich mehrfach selber auf:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| funktion( ... )
for ( ... ) { ... funktion( ... ) ... } |
Danke !!!
Moderiert von Th69: C#-Tags hinzugefügt
|
|
jaenicke
Beiträge: 19285
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 16.01.21 09:16
georgeboy hat folgendes geschrieben : | Meine Funktion ruft sich mehrfach selber auf: |
Dass es um rekursive Aufrufe geht, war klar. Aber die Anzahl dieser rekursiven Aufrufe kann man oft mit einem veränderten Algorithmus verringern.
|
|
georgeboy
Beiträge: 211
|
Verfasst: Sa 16.01.21 14:19
Mit Memoisation ? Wenn nicht, dann würde mich das interessieren.
|
|
jaenicke
Beiträge: 19285
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 16.01.21 17:15
Das kommt auf den Algorithmus an. Oft kann man den Algorithmus recht einfach modifizieren.
Die Fibonacci-Folge ist ein gutes Beispiel. Da ist der nicht-rekursive Algorithmus genauso einfach wie der rekursive.
Memoisierung ist ein weit gefasster Begriff. Natürlich muss man auch ggf. Variablen zur Zwischenspeicherung verwenden. Das ist aber nicht das, was man mit Memoisierung meint. Da geht es darum, dass man mehrere gleiche Aufrufe vermeidet, indem man die Ergebnisse zwischenspeichert. Das hat mit der Umwandlung einer rekursiven Funktion in eine nicht-rekursive wenig zu tun.
|
|
georgeboy
Beiträge: 211
|
Verfasst: So 17.01.21 08:26
|
|