Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7795935
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 1, 20262026-06-01T23:12:56+00:00 2026-06-01T23:12:56+00:00

I have implemented the following code (adapted from the tutorial ) in order to

  • 0

I have implemented the following code (adapted from the tutorial) in order to run a command prompt window, run a program and read the output. The code is called from a ButtonClick event handler, which is nested in a User Control.

I was under the impression that this would allow the rest of my program to function whilst the external process runs, due to the fact that the methods are ‘asynchronous’. However, this does not appear to be the case, as my UI will freeze while the operation is running. I should add that the output received when the cmd process ends is correct.

Sorry to dump a load of code like this, just not sure what else to do at this point!

Any assistance would be greatly appreciated.

public static void runExternalProcess()
{
    StringBuilder output = new StringBuilder();

    Process cmd = new Process();
    cmd.StartInfo.FileName = "cmd.exe";          
    cmd.StartInfo.UseShellExecute = false;
    cmd.StartInfo.CreateNoWindow = true;
    cmd.StartInfo.RedirectStandardOutput = true;

    cmd.OutputDataReceived += new DataReceivedEventHandler(outputEventHandler);        
    cmd.StartInfo.RedirectStandardInput = true;        
    cmd.Start();
    cmd.BeginOutputReadLine();      

    StreamWriter sortStreamWriter = cmd.StandardInput; 
    StreamWriter sw = cmd.StandardInput;

    if (sw.BaseStream.CanWrite)
    {
        sw.WriteLine("ping www.google.com");
    }

    sw.Close();

    cmd.WaitForExit();

    MessageBox.Show(output.ToString());

    cmd.Close();
}

private static void outputEventHandler(object sendingProcess, DataReceivedEventArgs e)
{
    if (!String.IsNullOrEmpty(e.Data))
    {
        output.Append(e.Data + Environment.NewLine);
    }
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-01T23:12:58+00:00Added an answer on June 1, 2026 at 11:12 pm

    How about registering for the Exited event and showing the MessageBox there:

    StringBuilder output = new StringBuilder();
    Process cmd = new Process();
    
    public void RunExternalPing()
    {
       cmd.StartInfo.FileName = "cmd.exe";
       cmd.StartInfo.UseShellExecute = false;
       cmd.StartInfo.CreateNoWindow = true;
       cmd.StartInfo.RedirectStandardOutput = true;
       cmd.StartInfo.RedirectStandardInput = true;
    
       cmd.EnableRaisingEvents = true;
       cmd.OutputDataReceived += 
          new DataReceivedEventHandler(cmd_OutputDataReceived);
       cmd.Exited += new EventHandler(cmd_Exited);
    
       cmd.Start();
       cmd.BeginOutputReadLine();
       StreamWriter sw = cmd.StandardInput;
       sw.WriteLine("ping www.google.com");
       sw.Close();
    }
    
    void cmd_Exited(object sender, EventArgs e)
    {
       MessageBox.Show(output.ToString());
       cmd.Dispose();
    }
    
    private void cmd_OutputDataReceived(object sender, DataReceivedEventArgs e)
    {
       if (!String.IsNullOrEmpty(e.Data))
       {
          output.Append(e.Data + Environment.NewLine);
       }
    }
    

    From MSDN:

    There are two ways of being notified when the associated process
    exits: synchronously and asynchronously. Synchronous notification
    relies on calling the WaitForExit method to pause the processing of
    your application until the associated component exits. Asynchronous
    notification relies on the Exited event. In either case,
    EnableRaisingEvents must be set to true for the Process component to
    receive notification that the process has exited.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have implemented the following code from this page: http://tympanus.net/codrops/2010/06/02/smooth-vertical-or-horizontal-page-scrolling-with-jquery/ $(document).ready(function() { $('ul.navone li
In order to understand the Monitor I have implemented the following code.But I am
I have implemented contextual menus in QTreeView items with the following code MyDerivedQTreeView->setModel(MyDerivedQAbstractItemModel); MyDerivedQTreeView->setContextMenuPolicy(Qt::CustomContextMenu);
I have implemented following code in my application. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
I have implemented an error style for textboxes using the following code. This sets
I have the following code that returns rows from a database when a form
I have the following code, I have implemented something like this so far, but
I have implemented the IEquatable interface in a class with the following code. public
I have an iframe and in order to access parent element I implemented following
I have implemented the following code to assign NSMutableArray to a property - NSMutableArray

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.