我把代码贴出来,大家给我看看,主要是在程序进入方法我要在窗体上控件上显示进入了方法,大家先不要管我的代码的逻辑,只要帮我实现功能吧,先谢谢了 
  //按钮的事件
        private void btnStrat_Click(object sender, EventArgs e)
        {
            this.allMethod();  
        }        //程序入口
        private void allMethod() 
        {
            string str = "程序开始运行时间是:" + DateTime.Now.ToString();
            this.rtxtRizhi.AppendText(str + "\n");            //调用方法会返回一个字符串
            rizhiMethod = new S().C();
            this.GetRichText(rizhiMethod, "调用了出货指示生成: new S().C()方法;");
        }        // 在窗体上显示日志的信息
        public void GetRichText(string str,string methodName)
        {
            this.rtxtRizhi.AppendText(DateTime.Now.ToString() + methodName + "\n");
            string[] text = str.Split(//得到一个分隔符);            //改变显示操作行数的颜色
            rtxtRizhi.SelectionBullet = true;
            rtxtRizhi.SelectionFont = new Font("隶书", 12, System.Drawing.FontStyle.Regular);
            rtxtRizhi.SelectionColor = Color.Blue;
            rtxtRizhi.AppendText(text[0] + "\n");            //改变显示异常信息的颜色
            rtxtRizhi.SelectionFont = new Font("隶书", 12, System.Drawing.FontStyle.Underline);
            rtxtRizhi.SelectionColor = Color.Red;
            rtxtRizhi.AppendText(text[1] + "\n");            //让滚动条显示在最下端
            this.rtxtRizhi.ScrollToCaret();  
        }        // 类里其中一个方法,
        public string C()
        {
            log.Warn("调用了什么什么方法");        //程序走到这里也要在窗体的richtextbox里显示,调用了什么方法            //存储异常信息
            string str = "";
            int a = 0;
            try
            {
                //正常的操作
            }
            catch (Exception e)
            {
               //存储异常信息
            }            //操作了多少条数据
            string readly = "";
            if (a != 0)
            {
                //记录此方法的日志信息
                log.Error(str);
            }            // 程序运行到这里不管有没有异常都要在床体里及时的显示
            
            return readly;
        } 
 

解决方案 »

  1.   

    GetRichText方法直接丢在线程中调用不行吗
      

  2.   

    工作线程不能直接访问UI线程你为何不把工作交给工作线程,UI的变化交给UI线程呢?非要反过来?非要反过来也可以,可能需要一个RichTextBox的代理类,来和RichTextBox交互,然后代理类由新线程来更新状态。
      

  3.   

    线程不能直接调用带参数的方法,可以将其封装到一个类里面,再透过线程来调用
    http://www.cnblogs.com/zyh-nhy/archive/2009/01/07/1371249.html
    希望对你有帮助