Veröffentlicht 24. April 201015 j Hallo, Ich habe die Aufgabe in der Schule bekommen ein Programm meiner Wahl zu programmieren, jedoch habe ich das Problem, das ich 2 Sachen auf einer Windows Form gleichzeitig machen möchte. Eine Frage soll erscheinen und im Hintergrund soll eine Picture Box hin und her wandern. Und das Gleichzeitig. Dann habe ich mich an die Klasse Threading gewagt aber komme nicht weiter. Hier ein kleiner Auszug public void btnStart_Click(object sender, EventArgs e) { ThreadStart neben; neben = new ThreadStart(MyProcedure); Thread myFirstThread = new Thread(neben); // den zweiten Thread starten myFirstThread.Start(); } public static void MyProcedure() { int x1 = pctPosition.Location.X, y1 = pctPosition.Location.Y; Point p; //Punkt p wird deklariert p = pctPosition.Location; while (x1 < 915) { x1 = pctPosition.Location.X; y1 = pctPosition.Location.Y; p.X += 5; p.Y += 0; pctPosition.Location = p; System.Threading.Thread.Sleep(200); } while (y1 > 550) { x1 = pctPosition.Location.X; y1 = pctPosition.Location.Y; p = pctPosition.Location; p.X += 0; p.Y -= 5; pctPosition.Location = p; System.Threading.Thread.Sleep(200); } } } } Nun erscheint aber der Fehler: Error 1 An object reference is required for the non-static field, method, or property 'Taxi.Route1.pctPosition' C:\Users\Murat\Documents\Visual Studio 2008\Projects\Taxi\Taxi\Route1.cs 45 22 Taxi Wäre nett wenn mir einer Weiterhelfen könnte! Mfg
24. April 201015 j Moin, wäre nett, wenn Du noch die Deklaration und die Instanzierung der Klasse Route1 zeigen würdest. Achja: Du könntest die -Tags nutzen ;-)
24. April 201015 j Du solltest MyProcedure() nicht als static deklarieren. Aber sei gewarnt: Die Single-Thread-Rule verbietet den Zugriff auf Steuerelemente aus Threads die nicht der GUI-Thread sind! Und du verstößt dagegen. Das wird nicht gut gehen. Alternativer Ansatz: Nimm einen BackgroundWorker, der die Berechnungen macht und nutze das ProgressChanged-Event, um die PictureBox zu bewegen, denn ProgressChanged wird autom. im GUI-Thread ausgeführt. Infos zum BgW hier: Übersicht über die BackgroundWorker-Komponente Grüße, JasonDelife.
25. April 201015 j Vielleicht hilft Dir auch dieser Webcast, in dem der Präsenter Tom Wendel am Beispiel einer kleinen WinForms Anwendung den Backgroundworker sowie das Threading erklärt und demonstriert. Webcast: Was Sie über UI-Design wissen sollten - Ein Blick hinter die Kulissen | MSDN Online
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.