Vraag : Probleem opnieuw wanneer de toepassing teken pas bezig is - verrichtingen in?

Ik heb een toepassing in VS2008 (VB.NET) die sommige lange handelingen uitvoert. Voor mijn hoofdvorm, heb ik een vooruitgangsbar (op markttentwijze) die ik zichtbaar zou willen zijn. Wanneer de toepassing subs en functies uitvoert, sluit de vorm omhoog en is slecht getrokken (zoals voorgesteld) voor verscheidene notulen terwijl de code wordt uitgevoerd - ik geloof de oplossing de functies in een andere draad in werking te stellen is. Hoe wordt dit EENVOUDIG gedaan?

When een radioknoop wordt geselecteerd, zijn de functies code executed.
Example:
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
" notpretty "
…
  ElseIf Me.RadioButtoni7.Checked = Waar toen
    ExecuteOperation („Begin“)
    RestartClusteredServiceProduction („HF1“)
    RestartClusteredServiceProduction („Sys2“)
    ExecuteOperation („Einde“)
  ElseIf Me.RadioButtoni8.Checked = Waar toen
    ExecuteOperation („Begin“)
    RestartPSProduction ()
    RestartSFProduction ()
    RestartQRProduction ()
    ExecuteOperation („Einde“)
  ElseIf Me.RadioButtoni9.Checked = Waar toen
    ExecuteOperation („Begin“)
    RestartTServerTest ()
    RestartEPSTest ()
    ExecuteOperation („Einde“)
  ElseIf Me.RadioButtono1.Checked = Waar toen
…

Antwoord : Probleem opnieuw wanneer de toepassing teken pas bezig is - verrichtingen in?

Hieronder is één of andere pseudocode die vereenvoudigd gebruik van de () tonen controle BackgroundWorker:
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:
Openbare Klasse Form1

    Privé Sub (ByVal afzender als System.Object, ByVal e als System.EventArgs) Handvatten Button1_Click Button1.Click
        BackgroundWorker1.RunWorkerAsync (ParameterOptionalHere)
    Sub van het eind

    Privé Sub (ByVal afzender als Voorwerp, ByVal e als System.ComponentModel.DoWorkEventArgs) Handvatten BackgroundWorker1_DoWork BackgroundWorker1.DoWork
        'grijp de parameter indien gebruikt:
        Verduister x die = e.Argument 'wordt gegoten aan wat u nodig hebt
        Foo (x)
    Sub van het eind

    Privé SubFoo ()

        '… uw bestaande sub…

        'Gebruik ReportProgress () als u GUI tijdens de verrichting moet bijwerken:
        BackgroundWorker1.ReportProgress (0, ANY_OBJECT_HERE)
        de 'eerste parameter is typisch 0 tot 100  voor progressbar
        de 'tweede parameter kan aan passy worden gebruikt OM HET EVEN WAT
    Sub van het eind

    Privé SubBackgroundWorker1_ProgressChanged (ByVal afzender als Voorwerp, ByVal e als System.ComponentModel.ProgressChangedEventArgs) behandelt BackgroundWorker1.ProgressChanged
        '… werk GUI van deze gebeurtenis bij…
        e.ProgressPercentage 'eerste parameter tot ReportProgress wordt overgegaan die ()
        e.UserState 'tweede parameter tot ReportProgress wordt overgegaan die () --> giet het met C ()
    Beëindig Sub

    Privé SubBackgroundWorker1_RunWorkerCompleted (ByVal afzender als Voorwerp, ByVal e als System.ComponentModel.RunWorkerCompletedEventArgs) behandelt BackgroundWorker1.RunWorkerCompleted
        '… steekt in brand dit wanneer de backgroundworkerverrichting… volledig is
    Sub van het eind

De Klasse van het eind
Andere oplossingen  
 
programming4us programming4us