Problem mit Windows Forms und BackgroundWorker / VS 2005
-
Hi,
bin neu hier und habe auch gleich ein etwas blöde Problem.
Das Problem bezieht sich auf die BackgroundWorker unter einer Windows Forms Anwendung.
Problem ist, dass diese nicht wirklich funktioniert, da sie bei gewissen Prozessen einfach den geist aufgibt und mit der Arbeit aufhört, ohne eine Fehlermeldung auszugeben.
Ich habe hier mal einen Codeausschnitt von dem Programm. Nun was es macht es ganz einfach. Es soll einfach Pixel einer soeben angelegten Bitmap beschreiben und das mit randomwerten, wie man unschwer erkennen kann.
Also in dieser Ausführund geht es noch soweit.
Alle anderen Erklärungen innerhalb des codes...private: System::Void Renderer_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e) { Bitmap ^image; image = gcnew Bitmap("foofoo.bmp",true); int x; int y; int Height = image->Height; int Width = image->Width; for ( y = 0; y < Height; y++ ) { for ( x = 0; x < Width; x++ ) { image->SetPixel( x, y, Color::FromArgb( rand()%255, rand()%255, rand()%255 ) ); /* Dies geht auch noch, will ich jedoch für eine Farbkomponente sin_d(y) oder soetwas benutzen, hört der Backgroudnworker sofort mit der Arbeit auf.*/ } Form1::Screen->Image = image; /*RenderProcess->Value::set(static_cast<int>(((float)y / (float)480) * (float)100)); dies geht zum Beispiel nicht, will der BackgroundWorker den Value von RenderProcess, welches eine ProcessBar ist, ändern, hört dieser unverzüglich mit dem Arbeiten auf*/ } image->Save("foo.bmp"); HelpBar->Text ="Rendering done"; }Ich weis wirklich nicht woran es liegt. Starten tuhe ich den Backgroundworker mit dem Befehl "RunWorkerAsync();" , was denke ich mal normal ist.
Das Problem ist zusätzlich, dass der Worker, wenn ich die Exe einmal aus den Ordner direkt starte und ich ihn ausführe, garnicht starten will.
Evtl. weis einer von euch eine Lösung, wofür ich wirklich sehr sehr dankbar wäre.
Mit freundlichen Grüßen,
Pak-X
-
Ach sorry falsches Forum. Kann es mal jemand Zu WinApi herüberziehen? Danke
-
Eher nach C++/CLI...
PS: Man darf normal nicht von anderen Threads auf GUI-Controls zugreifen...