如题最近学习多线程
从网上找的代码试验。一直会出现重复处理的问题。
求高手给我一个真正的多线程例子。要求可以自定义多个线程来处理同一个任务。
比如从一个ListBox读取所有行数记录。到另一个Listbox
最好顺序不变。运行速度要快可以用1-10000数字为Listbox的内容先谢过了

解决方案 »

  1.   

    临时写一段,应该可以满足你的要求。其中只增加了一个线程,因为你需要保持顺序不变,这样完全够了,毕竟线程太多也只是浪费系统资源,CPU就那么多能力。添加了一个线程后可以保证用户界面不会无响应,这是好的。另外还有一种队列模式,将需要执行的方法添加到线程队列,不过那是在请求随机的情况下才用,像这种已知ListBox数据的情况,完全没必要。public partial class Form1:Form
    {
      Thread thread1;
      
      public Form1()
      {
        InitializeComponent();
        this.button1.Click+=new EventHandler(button1_Click);//假定你已添加了一个按钮button1
        label1.Text = "0/" + listBox1.Items.Count.ToString();//显示进度
      }  private void button1_Click(object sender, EventArgs e)
      {
        thread1 = new Thread(delegate(){
          int i = 0;
          foreach (Object item in listBox1.Items)
          {
            int j = ++i;
            
            Object newitem = DoSomeThing(item);//这里你自己写实现方法
             oneParam d = new oneParam(itemdone);
            this.Invoke(d, new object[] { j,newitem });
          }
          
        }
        thread1.Start();    
      }  delegate void oneParam(int i,Object item);  void itemdone(int i,Object item)
      {
         listBox2.Items.Add(item);
         label1.Text = i.ToString() + "/" + listBox1.Items.Count.ToString();//更新进度
       }
    }