I am trying to write a basic SSH terminal, and am using the SSH class available on code guru. I am also very new to C# so my structure and organzation might be a bit screwy. Anyway, I have this multi-threaded set of functions using the BackgroundWorker, and I can't get a certain event to fire (or so it seems). Here are the code segments:

Code:
 protected BackgroundWorker SSHSession = new BackgroundWorker();
        protected SshShell shell = null;

        public AutoTerm()
        {
            InitializeComponent();
            InitSSHSessionWorker();
        }

        private void InitSSHSessionWorker()
        {
            SSHSession.DoWork += new DoWorkEventHandler(SSHSession_DoWork);
            SSHSession.ProgressChanged += new ProgressChangedEventHandler(SSHSession_ProgressChanged);
        }


        private void buttonGo_Click(object sender, EventArgs e)
        {
            buttonGo.Enabled = false;
            SSHSession.RunWorkerAsync();

        }

 private void TermBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (null != shell)
            {
                if (true == shell.Connected)
                {
                    shell.Write(e.KeyChar.ToString());
                }
            }
        }

private void RunSSH(BackgroundWorker Worker)
        {
            shell = new SshShell("x.x.x.x", "cat");
            shell.Password = "dog";
            shell.Connect();

            string Input;

            while (true == shell.Connected)
            {
                Input = shell.Expect("\n");
                Worker.ReportProgress(5, Input);
            }

        }
        // This event handler updates the progress bar.
        private void SSHSession_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
           TermBox.Text +=  e.UserState as string;
          
        }


        private void SSHSession_DoWork(object sender, DoWorkEventArgs e)
        {
            RunSSH(sender as BackgroundWorker);
        }
Now what happens is that everything seems fine until the line in RunSSH() gets to "Worker.ReportProgress(5, Input);"

At that line, Input has actual text in it that looks right. When I execute the line, nothing happens. Specifically the break point I put on "TermBox.Text += e.UserState as string;" never gets hit.

So it seems that the event for ProgressReport never fires even though I am calling the method on Worker. What am I doing wrong?