Frage : Problem neu entwerfen, wenn Anwendung beschäftigt ist - verlegen Betriebe?

Ich habe eine Anwendung in VS2008 (VB.NET) das einige langatmige Betriebe durchführt. Auf meiner Hauptform habe ich einen Fortschrittsstab (im Festzeltmodus) diesen ich möchte sichtbar sein. Wenn die Anwendung Unterseeboote und Funktionen durchführt, verriegelt die Form oben und gezeichnet schlecht (wie dargestellt) für einige Minuten, während Code durchgeführt - ich glaube, dass die Lösung, die Funktionen in einem anderen Gewinde laufen zu lassen ist. Wie getan dieses EINFACH?

When, das ein Radioknopf, die Funktionen vorgewählt, sind executed.
Example Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
…
  ElseIf Me.RadioButtoni7.Checked = ausrichten dann nn
    ExecuteOperation („Anfang“)
    RestartClusteredServiceProduction („HF1“)
    RestartClusteredServiceProduction („Sys2“)
    ExecuteOperation („Anschlag“)
  ElseIf Me.RadioButtoni8.Checked = ausrichten dann nn
    ExecuteOperation („Anfang“)
    RestartPSProduction ()
    RestartSFProduction ()
    RestartQRProduction ()
    ExecuteOperation („Anschlag“)
  ElseIf Me.RadioButtoni9.Checked = ausrichten dann nn
    ExecuteOperation („Anfang“)
    RestartTServerTest ()
    RestartEPSTest ()
    ExecuteOperation („Anschlag“)
  ElseIf Me.RadioButtono1.Checked = ausrichten dann nn
…
Attachments:
Application eingefroren während executing
eingefroren
How, welches, die Anwendung bei der Durchführung schauen sollte (Fortschrittsstab ist sichtbar) (einige Formelemente pixelated für Privatsphäre/Sicherheit),
schauen sollte

Antwort : Problem neu entwerfen, wenn Anwendung beschäftigt ist - verlegen Betriebe?

Unter ist irgendeine Codevertretung vereinfachter Gebrauch von der BackgroundWorker () Steuerung:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
Allgemeine Kategorie Form1

    Private Handgriffe Button1.Click des Unterseeboot-Button1_Click (ByVal Absender als System.Object, ByVal e als System.EventArgs)
        BackgroundWorker1.RunWorkerAsync (ParameterOptionalHere)
    Enden-Unterseeboot

    Private Handgriffe BackgroundWorker1.DoWork des Unterseeboot-BackgroundWorker1_DoWork (ByVal Absender als Gegenstand, ByVal e als System.ComponentModel.DoWorkEventArgs)
        'den Parameter ergreifen, wenn Sie verwendet:
        Verdunkeln x = e.Argument 'Form zu, was auch immer Sie benötigen
        Foo (x)
    Enden-Unterseeboot

    Privates VorFoo ()

        '… Ihr vorhandenes Unterseeboot…

        'ReportProgress verwenden () wenn Sie das GUI während des Betriebes aktualisieren müssen:
        BackgroundWorker1.ReportProgress (0, ANY_OBJECT_HERE)
        'erster Parameter ist gewöhnlich 0 bis 100  für ein progressbar
        'zweiter Parameter kann an passy gewöhnt sein ALLES
    Enden-Unterseeboot

    Privates Unterseeboot BackgroundWorker1_ProgressChanged (ByVal Absender als Gegenstand, ByVal e als System.ComponentModel.ProgressChangedEventArgs) behandelt BackgroundWorker1.ProgressChanged
        '… Update das GUI von diesem Ereignis…
        e.ProgressPercentage 'erster Parameter überschritt ReportProgress ()
        e.UserState 'zweiter Parameter überschritt ReportProgress () --> ihn mit C werfen ()
    Unterseeboot beenden

    Privates Unterseeboot BackgroundWorker1_RunWorkerCompleted (ByVal Absender als Gegenstand, ByVal e als System.ComponentModel.RunWorkerCompletedEventArgs) behandelt BackgroundWorker1.RunWorkerCompleted
        '… dieses Feuer, wenn der backgroundworker Betrieb ist komplett…
    Enden-Unterseeboot

Enden-Kategorie
Weitere Lösungen  
 
programming4us programming4us