public FormMain()
{
InitializeComponent();
FormMain.CheckForIllegalCrossThreadCalls = false;
}
加一句这个看看能不能行,不过这个不安全,最好自己用委托来实现.

解决方案 »

  1.   

    什么线程都没用,因为最终还是得回到主线程作业。
    当然,如果你能自己写出解释Html语言的程序,那可以直接把DocumentText直接传递给子线程处理,这样就不会占用主线程的CPU时间。
      

  2.   

    加上FormMain.CheckForIllegalCrossThreadCalls = false;
    或者用委托来写 
      

  3.   


    delegate void ShowCustomerInfo(string message);public void BuildText(byte[] dataByte, int offset, int count)
            {
                try
                {
                    string serverMessage = string.Empty;
                    byte[] _bt = GetByte(dataByte);
                    myBuilder.Append(Encoding.UTF8.GetString(_bt), 0, count - 2);
                    serverMessage = myBuilder.ToString();
                    if (Tools.VerdictTel(serverMessage))
                    {
                        //必须由主线程通过委托显示新窗体,否则新窗体关闭有错误。
                        //NewForm(serverMessage);
                        this.Invoke(new ShowCustomerInfo(NewForm), serverMessage);
                    }
                    //else
                    //MessageBox.Show(serverMessage);
                    //Empty the StringBuilder
                    myBuilder = new StringBuilder();
                }
                catch (Exception ex)
                {
                    Tools.WriteLog(ex.Message);
                }
            }/// <summary>
            /// 显示客户信息窗体
            /// </summary>
            /// <param name="message"></param>
            private void NewForm(string message)
            {
                CustomerInfo ci = new CustomerInfo();
                ci.CusTel = message;
                ci.Show();
            }