Zum Inhalt springen

[C#] Winforms Oberfläche nicht erreichbar


Empfohlene Beiträge

Geschrieben

Hallo,

ich habe derzeit das Problem, dass bei Rechenintensiven Aufgaben die Oberfläche nicht mehr erreichbar ist. Simples "Keine Rückmeldung" im Taskmanager, aber das Programm an sich läuft noch.

Hat jemand einen Tipp, oder einen guten Guide für einen Background-Worker, mit dem das ganze realisierbar zu seien scheint?

Danke und Gruß

SeToY :)

Geschrieben

Danke dir, ich habe jedoch noch ein Problem :P

Ich rufe meinen Worker folgendermaßen auf:


        private void btnExport_Click(object sender, EventArgs e)

        {

            if (cbServerName.Text != string.Empty && cbDatabase.Text != string.Empty)

            {

                backgroundWorker1.RunWorkerAsync();

            }

            else

            {

                MessageBox.Show("No Server or Database set!");

            }

        }

So weit so gut... Nun sieht meine DoWork-Methode so aus:

                //tbDirectory.Enabled = false;

                //directoryPath = tbDirectory.Text + "\\";

                SqlConnectionStringBuilder stringBuilder = new SqlConnectionStringBuilder();

                stringBuilder.DataSource = cbServerName.Text;

                stringBuilder.InitialCatalog = cbDatabase.Text;

                stringBuilder.UserID = tbUsername.Text;

                stringBuilder.Password = tbPassword.Text;


[......]

Wenn ich nun in meine DoWork-Methode debugge, sehe ich, dass der BackgroundWorker nach dem initialisieren des StringBuilders direkt wieder in die "RunWorkerCompleted"-Methode springt... Obwohl die DoWork-Methode noch viel viel länger ist... Er macht einfach nicht alles, was in der Methode steht.

Lieben Gruß

SeToY

Geschrieben

Bin mir grad ned wirklich sicher, aber kann des daran scheitern, dass du versuchst mit dem Backgroundworker auf Controls zuzugreifen???

Du holst dir ja zum Beispiel mit


stringBuilder.DataSource = cbServerName.Text;

den aktuellen Text einer ComboBox nehm ich etz mal an. Und ich glaub mit sowas hat ein Backgroundworker probleme.

Besser wäre es wenn du ihm die Werte der Textboxen und ComboBoxen direkt mitgibst.

Ich hab lange nichts mehr mit Backgroundworkern gemacht, darum bin ich mir nicht ganz sicher... (nur zur info) :)

Geschrieben

Hallo

bin zwar nicht besonders gut in C#, aber ich denke dein Code müsste auf eine Exception laufen. Kannst ja mal mit Try Catch abfangen !

Man darf nämlich im DoWork nicht auf Elemente der Maske zugreifen.

Ich löse diesen Umstand meißt so, dass ich die Werte der MaskenElemente vorher in eine lokale Variable speichere und auf diese kann man dann im DoWork- Zweig zugreifen.

Viel Spass

Hans-Jörg

Geschrieben

Kannst ja mal mit Try Catch abfangen !

Unter Debug->Exceptions kannst du einstellen bei welchen Exceptions VS stehen bleiben soll... einfach ein hacken bei Thrown rein. Somit kannst du dir das try catch sparen beim debuggen...

Geschrieben

Hallo,

ja - habe jetzt auch gemerkt, dass ich nicht auf die Controls des GUI zugreifen kann. Habe diese nun in variablen initialisiert, mit welchen ich im Worker arbeite.

@2k:

Danke, habe ich auch noch nicht gesehen :)

Vielen Dank noch mal an alle, mein Programm steht und läuft... und läuft und läuft :)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...