解决方案 »

  1.   

    你可以先学习 BackgroundWorker.
      

  2.   

    http://blog.csdn.net/conmajia/article/details/7831251
    野比喵的
      

  3.   

    Async http://msdn.microsoft.com/library/default.aspx
    骚年祝你自学成才
      

  4.   

    delegate void SetpicsiziCallback(string xiaoxi);
            private void SetXiaoXi(string xiaoxi)
            {
                if (this.InvokeRequired)
                {
                    SetpicsiziCallback d = new SetpicsiziCallback(SetXiaoXi);
                    this.Invoke(d, new object[] { xiaoxi });
                }
                else
                {
                    this.toolStripStatusLabel1.Text = xiaoxi;
                }
            }
    直接调用SetXiaoXi赋值
      

  5.   


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;namespace Model
    {
        public static class ControlExtended
        {
            public delegate void InvokeHandler();
            /// <summary>
            /// 线程操作Invoke
            /// </summary>
            /// <param name="control"></param>
            /// <param name="handler"></param>
            public static void UIInvoke(this Control control, InvokeHandler handler)
            {
                if (control.InvokeRequired)
                {
                    control.Invoke(handler);
                }
                else
                {
                    handler();
                }
            }
        }
    }//调用
    private void button3_Click(object sender, EventArgs e)
            {
                 Thread tdAdd = new Thread(function);
                 tdAdd.Start();
            }
    public void function()
            {
                this.UIInvoke(() =>
                {
                   //执行代码
                });
            }
      

  6.   

    其实就是ui 只能在创建UI元素的线程上调用。Dispather.Invoke,其他的自己慢慢琢磨吧。多线程可不是几句话能说清楚的,这里面花样太多。你看.net4.5不就是在多线程,异步上做了改进。你去看文档,都会推荐你用Task,但是Task的问题在哪?没人告诉你。你要自己琢磨。这里面还有闭包的问题。自己学吧。
      

  7.   

    方式一:在线程中使用Invoke来刷新数据,并不断的读取UI中的数据。
    方式二:使用数据双向绑定,这样一来,线程中的数据就可以即时的刷新到UI中,同时UI中数据的改变也可以即时的反馈到线程中。
      

  8.   

    开多线程楼主应该是会的。主要的问题应该是跨线程调用的问题吧。
    有一个叫INVOKE的神器。研究好它 基本上大多数的跨线程调用问题都能解决
      

  9.   


    哇。好高深。还对Control使用了扩展方法~~~