Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Powershell progressbar AND multitask

Frage Entwicklung

Mitglied: today12

today12 (Level 1) - Jetzt verbinden

12.02.2015 um 19:54 Uhr, 1583 Aufrufe, 4 Kommentare, 1 Danke

Hallo Leute,

ich bin mal wieder auf eure Hilfe angewiesen, da mir die verschiedensten SuFu keine geeigneten Ergebnisse liefern können.

Ich arbeite hier mit SAPIEN Powershell Studio 2012.
Es soll eigentlich nicht mehr können, als dass man den "Abbruch"-Button (dtz. noch nicht belegt. ) verwenden kann, während die Progressbar bis 15 zählt.
Geklickt kann innerhalb der GUI erst dann wieder werden, wenn dieser "Progressbar"-Prozess abgeschlossen ist.

Wie kann ich das am besten Umsetzen ? Gibt es da etwas wie Multithreading/Multiprocessing innerhalb dieser Oberfläche ?

Vielen Dank schon Mal.

559e2488a4dd44afcc99aa0d8c55b45b - Klicke auf das Bild, um es zu vergrößern

ed92407d34c5cbeefda88e5ac069e402 - Klicke auf das Bild, um es zu vergrößern

LG
Mitglied: colinardo
12.02.2015, aktualisiert um 20:31 Uhr
Hallo today12,
Lösungen dazu findest du hier:

Falls dir die Codes aus den obigen Threads zu schwer sein sollten, hier noch eine einfache Variante mit einem Timer welcher die Progressbar aktualisiert:
01.
#region Import the Assemblies 
02.
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null 
03.
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null 
04.
#endregion 
05.
 
06.
#region Generated Form Objects 
07.
$form1 = New-Object System.Windows.Forms.Form 
08.
$button1 = New-Object System.Windows.Forms.Button 
09.
$progress = New-Object System.Windows.Forms.ProgressBar 
10.
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState 
11.
$timer = New-Object System.Windows.Forms.Timer 
12.
#endregion Generated Form Objects 
13.
 
14.
$global:cnt = 0 
15.
 
16.
$handler_button1_Click= { 
17.
    if ($button1.Text -eq "Start"){ 
18.
        $global:cnt = 0 
19.
        $timer.Start() 
20.
        $button1.Text = "Stop" 
21.
    }else{ 
22.
        $timer.Stop() 
23.
        $button1.Text = "Start" 
24.
25.
 
26.
27.
$handler_tick = { 
28.
    if ($global:cnt -le 100) { 
29.
        $progress.Value = $global:cnt++ 
30.
    }else{ 
31.
        $timer.Enabled = $false 
32.
        $button1.Text = "Start" 
33.
34.
35.
 
36.
$OnLoadForm_StateCorrection= 
37.
{#Correct the initial state of the form to prevent the .Net maximized form issue 
38.
	$form1.WindowState = $InitialFormWindowState 
39.
40.
 
41.
#---------------------------------------------- 
42.
#region Generated Form Code 
43.
$System_Drawing_Size = New-Object System.Drawing.Size 
44.
$System_Drawing_Size.Height = 74 
45.
$System_Drawing_Size.Width = 292 
46.
$form1.ClientSize = $System_Drawing_Size 
47.
$form1.DataBindings.DefaultDataSourceUpdateMode = 0 
48.
$form1.MaximizeBox = $False 
49.
$form1.Name = "form1" 
50.
$form1.Text = "ProgressForm" 
51.
 
52.
 
53.
$button1.DataBindings.DefaultDataSourceUpdateMode = 0 
54.
 
55.
$System_Drawing_Point = New-Object System.Drawing.Point 
56.
$System_Drawing_Point.X = 12 
57.
$System_Drawing_Point.Y = 41 
58.
$button1.Location = $System_Drawing_Point 
59.
$button1.Name = "button1" 
60.
$System_Drawing_Size = New-Object System.Drawing.Size 
61.
$System_Drawing_Size.Height = 23 
62.
$System_Drawing_Size.Width = 268 
63.
$button1.Size = $System_Drawing_Size 
64.
$button1.TabIndex = 1 
65.
$button1.Text = "Start" 
66.
$button1.UseVisualStyleBackColor = $True 
67.
$button1.add_Click($handler_button1_Click) 
68.
 
69.
$form1.Controls.Add($button1) 
70.
 
71.
$progress.DataBindings.DefaultDataSourceUpdateMode = 0 
72.
$System_Drawing_Point = New-Object System.Drawing.Point 
73.
$System_Drawing_Point.X = 12 
74.
$System_Drawing_Point.Y = 12 
75.
$progress.Location = $System_Drawing_Point 
76.
$progress.Name = "progress" 
77.
$System_Drawing_Size = New-Object System.Drawing.Size 
78.
$System_Drawing_Size.Height = 23 
79.
$System_Drawing_Size.Width = 268 
80.
$progress.Size = $System_Drawing_Size 
81.
$progress.TabIndex = 0 
82.
 
83.
$form1.Controls.Add($progress) 
84.
 
85.
#Save the initial state of the form 
86.
$InitialFormWindowState = $form1.WindowState 
87.
#Init the OnLoad event to correct the initial state of the form 
88.
$form1.add_Load($OnLoadForm_StateCorrection) 
89.
 
90.
#Timer settings 
91.
$timer.add_tick($handler_tick) 
92.
$timer.Enabled = $false 
93.
$timer.Interval = 50 
94.
 
95.
#----- Show Form 
96.
$form1.ShowDialog() | out-null 
97.
 
98.
# WICHTIG Timer resourcen freigeben  
99.
$timer.dispose()
Grüße Uwe
Bitte warten ..
Mitglied: today12
12.02.2015 um 20:44 Uhr
Danke schonmal für die Hilfe :D
Ich hab aber hier bei dieser Schleife doch noch das ein oder andere Verständnis Problem::

$proc = $true

while(!$proc.HasExited)
{
$time = 15 # seconds, use you actual time in here
foreach($i in (1..$time)) {
$percentage = $i / $time
$progressbar1.Value = ($percentage * 100)
Start-Sleep 1
}

Wsl. hab ich das eh falsch interpretiert
aber wie kann ich das anhand dieser Schleife ermöglichen, dass damit nur die Progessbar angeprochen wird ?!

:
Bitte warten ..
Mitglied: 114757
13.02.2015, aktualisiert um 08:29 Uhr
Wsl. hab ich das eh falsch interpretiert
aber wie kann ich das anhand dieser Schleife ermöglichen, dass damit nur die Progessbar angeprochen wird ?!
Diese Schleife bringt dich keinen Schritt weiter wenn du sie nicht aus einem anderen Thread laufen lässt denn sonst blockiert diese ebenfalls den Userthread für mögliche Eingaben !!

Nutze die einfache Variante von @colinardo oben mit dem Timer, dort wird die ProgressBar nämlich aus dem Eventhandler in einem parallelthread aktualisiert ! Fortgeschrittene wählen natürlich die Runspace-Methode aus dem ersten Link.

Gruß jodel32
Bitte warten ..
Mitglied: colinardo
13.02.2015 um 09:52 Uhr
Da kann ich @114757 nur beipflichten. Mit dieser Schleife erreichst du nicht dein Ziel, weil sie eben wie schon geschrieben den Userthread blockiert und damit die User-Interaktion mit den Steuerelementen.

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Windows Tools
Powershell Progressbar will nicht
gelöst Frage von H41mSh1C0RWindows Tools15 Kommentare

Hi All auch wenn es mit Write-Progress ein cmdlet gibt würde ich aktuell den Progressbar in der eigenen GUI ...

Entwicklung
Powershell: Timer-Funktion und Progressbar-Funktion
gelöst Frage von SaschaRDEntwicklung8 Kommentare

Hallo zusammen, ich benötige bei 2 Funktionen in Powershell etwas Unterstützung: Fall-1: Ich habe eine Timer-Funktion die eine Anzahl(X) ...

VB for Applications
VB.NET - Variable aus Textbox in Progressbar ausgeben
gelöst Frage von TermimanVB for Applications2 Kommentare

Hallo liebe Programmier, mich plagt seit gestern ein kleines Problem : Ich habe mir eine kleine Prozedur geschrieben mit ...

Visual Studio
Progressbar füllt sich erst nach Abschluss des Downloads
gelöst Frage von GERz0cKErZVisual Studio3 Kommentare

Ich habe eine Progressbar und ein Label die beide erst nach dem Abschluss des Downloads gefüllt werden, wieso? Dieser ...

Neue Wissensbeiträge
Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 32 MinutenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 4 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...