2012-03-28 5 views
1

Mein Programm zeichnet sich stark durch eine Winform aus. Während der Zeichnung reagiert die Winform nicht. Wie reagiere ich auf meine Maus? Ich möchte einen anderen Thread verwenden, um zu der Winform zu zeichnen, aber ich fürchte, ich werde den berüchtigten Cross-Threads-Access-Controll-Fehler treffen.Wie man ein Winform reagiert, während ein schweres Gemälde unterwegs ist

+1

In welcher Weise zeichnet es? Ist es mit GDI + zu malen oder ist das Neuanordnen/Erstellen von (Benutzer-) Steuerelementen? –

+1

Ich verwende das System.Drawing.Graphics, also sollte es GDI + sein. – smwikipedia

Antwort

2

ist hier ein großer MSDN-Artikel, die Ihnen helfen: Give Your .NET-based Application a Fast and Responsive UI with Multiple Thread

Wenn ich ähnliche Probleme konfrontiert war, ist es mir sehr viel geholfen, zu verstehen, was zu tun ist.

Sie können auch einen Blick auf Parallel Programming in .NET Framework 4 werfen. Diese Serie enthält auch eine Strategie mit Berechnungen, die auf mehrere synchronisierte Threads verteilt sind und alle sofort einsatzbereite .NET-Sammlungen verwenden. Dies ist nicht so kompliziert wie es klingen mag. Probieren Sie es einfach aus. :-)

Auch, wenn Sie die Chance haben, die anstehenden .NET-Erweiterungen zu nutzen, wäre es wert Asynchronous Programming with Async and Await

0

Sie können die Klasse BackgroundWorker verwenden, um Ihre Winform ansprechend zu halten. MSDN.

0

Das Problem ist, wenn Sie ausführen UI Sachen zu versuchen. Sie müssen dazu in den UI-Thread zurückkehren. Alles, was ich empfehlen kann, ist, etwas zu zeichnen, den UI-Thread Ereignisse verarbeiten zu lassen, ein wenig zu zeichnen.

Das ist wahrscheinlich der beste Weg, um, aber es ist nicht ... Far zu tun einfach weniger einfacher als nur in einem anderen Thread nicht UI Jobs laufen ...

1

Wenn das Problem ist + GDI Malerei Sie können alle tun Ihre Zeichnung auf einer separaten Bitmap in einem separaten Thread (anstatt direkt auf den Bildschirm zu zeichnen) - und wenn Sie fertig sind: Kopieren Sie die gesamte Bitmap auf das Formular.

Verwandte Themen