Ich möchte meine Problemstellung nun etwas erweitern. Zuvor fasse ich kurz zusammen, was sich bisher hier zusammengetragen hat. Ich habe eine sehr rechenintensive Funktion zur Berechnung der Fibunacci Folge implementiert. Dies geschah bewusst, da ich so das einfrieren einer Windows Forms Anwendung demonstrieren/hervorrufen konnte. Für dieses Problem sollte eine Lösung gefunden werden, diese fand sich dann auch in der Verwendung von await Task.Run(() => ausg = fibu(x));. Mit dieser Lösung konnte ich dann die Form bewegen/verkleinern/vergrößern, während im Hintergrund die rechenintensive Funktion ablief.
Jetzt möchte ich dieses Problem etwas erweitern. Angenommen meine rechenintensive Funktion greift auf ein Kontrollelement zu, sagen wir mal auf ein DataGrid, dann erscheint resultiert folgende Fehlermeldung "Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement Form1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde". Meine Frage wäre an dieser Stelle: Wie kann man dieses Problem lösen?
Eine Idee wäre zuerst Daten zu sammeln (in der rechenintensiven Prozedur) und dann die (berechneten) Ergebnisse zurückspielen in das DataGrid. Der @ErfinderDesRades hatte an dieser Stelle Hier etwas ähnliches beschrieben. Aber führt dieses "Aufteilen" nicht zu einer deutlich verlängerten Laufzeit? Daher wie würde man das gut und praktikabel lösen?
Jetzt möchte ich dieses Problem etwas erweitern. Angenommen meine rechenintensive Funktion greift auf ein Kontrollelement zu, sagen wir mal auf ein DataGrid, dann erscheint resultiert folgende Fehlermeldung "Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement Form1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde". Meine Frage wäre an dieser Stelle: Wie kann man dieses Problem lösen?
Eine Idee wäre zuerst Daten zu sammeln (in der rechenintensiven Prozedur) und dann die (berechneten) Ergebnisse zurückspielen in das DataGrid. Der @ErfinderDesRades hatte an dieser Stelle Hier etwas ähnliches beschrieben. Aber führt dieses "Aufteilen" nicht zu einer deutlich verlängerten Laufzeit? Daher wie würde man das gut und praktikabel lösen?