Forum: Win32/Win64 API (native code)
C#
by OregonGhost,
13. Mär 2008
Ja. DoWork wird in einem separaten Thread ausgeführt. Aber du kannst von hier aus z.B. ReportProgress aufrufen und in deinem Formular auf das ProgressChanged-Ereignis reagieren.
PS: Psst, mit sieht der Code viel besser aus ;)
Forum: Win32/Win64 API (native code)
C#
by OregonGhost,
13. Mär 2008
Der BackgroundWorker nimmt dir die ganze Arbeit der Verwaltung ab, wenn dein Thread nichts weiter macht als irgendwas zu arbeiten, seinen Fortschritt zu melden und schließlich zu sagen, dass er fertig ist. Das läuft Event-basiert und ist sehr einfach aufgebaut. Probier es mal aus, wenn du nicht mehr Informationen von deinen Threads brauchst, ist es vielleicht sogar besser als alles von Hand zu...
Forum: Win32/Win64 API (native code)
C#
by OregonGhost,
13. Mär 2008
Wie benutzt du denn die Monitore?
lock (x)
{
DoSomething();
}
ist ja gleichbedeutend mit
System.Object obj = (System.Object)x;
Forum: Win32/Win64 API (native code)
C#
by OregonGhost,
13. Mär 2008
Synchronisieren zum Beispiel so (häufig z.B. in einem Ereignishandler anzutreffen, der auf ein im Thread ausgelöstes Ereignis reagiert):
void thread1_Event(object sender, EventArgs e)
{
if (InvokeRequired) {
Invoke(new EventHandler(thread1_Event));
} else {
// Mach, was du eigentlich machen willst
}
}