Greetings,
i am just trying to show the console output to label text. but it's just not working..
i have tired hours and hours of this and that but none is working.. and now came here for support
here is the code i have tried so far:
Code:private static void ExecuteCLI(string[] args, string workingDir, Form form, Label label) { List<string> lArgs = new List<string>(args); lArgs.RemoveRange(0, 3); string cliFile = args[2]; string cliArgs = string.Join(" ", lArgs.ConvertAll(item => item.Contains(" ") == true ? '"' + item + '"' : item)); //create working directory if not exits if(Directory.Exists(workingDir) == true && isIde == true) { label.Text = "Deleting Working Dir..."; foreach(string filePath in Directory.GetFiles(workingDir, "*.*", SearchOption.AllDirectories)) { new FileInfo(filePath).Attributes = FileAttributes.Normal; File.Delete(filePath); } Directory.Delete(workingDir, true); label.Text = "Status Goes Here..."; } if(Directory.Exists(workingDir) == false) { Directory.CreateDirectory(workingDir); } Process process = new Process() { StartInfo = new ProcessStartInfo() { FileName = cliFile, Arguments = cliArgs, UseShellExecute = false, WindowStyle = ProcessWindowStyle.Hidden, CreateNoWindow = true, RedirectStandardOutput = true, WorkingDirectory = workingDir, }, }; process.OutputDataReceived += delegate (object sender, DataReceivedEventArgs e) { if(e.Data == null) { return; } string cliMSG = e.Data.Trim(); if(cliMSG.StartsWith("Extracting") == true) { System.Diagnostics.Debug.WriteLine(cliMSG); //if no method is used, it's shows the output on debug/output window just fine.. //sUpdateAddressBar(form, label, cliMSG); (3rd Method, crash/keeps loading forever without updating) //setLabelText(label, cliMSG); (2nd Method, crash/keeps loading forever without updating) /* // (1st method though don't crash the app, just don't updte the form.BeginInvoke((Action)(() => { label.Text = cliMSG; })); */ } }; process.Start(); process.BeginOutputReadLine(); process.WaitForExit(); process.Dispose(); form.DialogResult = DialogResult.OK; } private static void setLabelText(Label label, string text) { if(label.InvokeRequired) { label.Invoke((System.Action)(() => setLabelText(label, text))); } else { label.Text = text; } } private delegate void sCBUpdateAddresBar(Form form, Label label, string text); private static void sUpdateAddressBar(Form form, Label label, string text) { if(form.InvokeRequired) { form.Invoke(new sCBUpdateAddresBar(sUpdateAddressBar), form, label, text); } else { label.Text = text; } }
as i have noted in comments no method i have tried does works
here is the screen shot of crashed/loading forever: (i red marked the area to identify the cursor)
can any one suggest me what i am doing wrong? here?
best regards




Reply With Quote
