Benutzer mit den meisten Antworten
wpf mit timer und background thread

Frage
-
Hallo,
ich versuche ein CLI Tool alle paar Sekunden als Background Thread zu starten.
Allerdings startet der Process nicht. Ich weiß leider nicht was ich falsch mache, hier der Code:private void worker_DoWork(object sender, DoWorkEventArgs e) { ProcessStartInfo processStartInfo = new ProcessStartInfo("ipconfig"); processStartInfo.UseShellExecute = false; processStartInfo.RedirectStandardInput = true; processStartInfo.RedirectStandardOutput = true; Process process = new Process(); process.StartInfo = processStartInfo; process.Start(); StreamReader reader = process.StandardOutput; string result = reader.ReadToEnd(); textBlockResult.Text = result; } private void evaluateLoad(object sender, EventArgs e) { BackgroundWorker worker = new BackgroundWorker(); worker.WorkerReportsProgress = true; worker.WorkerSupportsCancellation = true; worker.DoWork += new DoWorkEventHandler(worker_DoWork); } private void LoadDisplay_Loaded(object sender, RoutedEventArgs e) { DispatcherTimer timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromSeconds(1); timer.Tick += evaluateLoad; timer.Start(); }
Danke!
Antworten
-
Hallo,
zu 1.)
siehe WLAN ohne sichtbares cmd-Fenster ein- ausschaltenzu 2.)
Dafür brauchst du in WPF den Dispatcher:this.Dispatcher.Invoke(() => { //Führe hier deinen zur GUI synchronen Code aus });
Beachte, das alles was darin ausgeführt wird, nicht mehr asynchron läuft.Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert pmatula Dienstag, 12. August 2014 07:36
Alle Antworten
-
Ein sehr guter Hinweis, ups.
Aber nach dem Starten hab ich 2 Probleme:
1: poppt immer so ein schwarzes CMD Fenster auf, da ich ja ein CLI Tool starte (nehm ich an), kann ich das unterbinden? Das ist etwas nervig :-/
2: Wird der Inhalt nicht mehr auf WPF TextBlock geschrieben, ich habe schon gelesen, dass es nicht direkt möglich ist von einem Background Thread auf die GUI zu schreiben, allerdings hab ich noch keine schöne elegante Lösung gefunden, damit ich das trotzdem kann.
Danke!! -
Hallo,
zu 1.)
siehe WLAN ohne sichtbares cmd-Fenster ein- ausschaltenzu 2.)
Dafür brauchst du in WPF den Dispatcher:this.Dispatcher.Invoke(() => { //Führe hier deinen zur GUI synchronen Code aus });
Beachte, das alles was darin ausgeführt wird, nicht mehr asynchron läuft.Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert pmatula Dienstag, 12. August 2014 07:36