有两个问题:1 想做一个多线程异步的程序,要求如下根据用户输入的整数来生成多少个线程(最多不大于10), 多个线程跑同一个SQL脚本, 同不过是参数不同罢了, 当多个线程跑完, 再将多个线程查询出来的结果汇总到一个List中, 再返回到页面绑定到数据控件,  但整个过程必须是异步, 不能因为查询时间太久而造成假死的现像. 不知大家有没有相应的代码业推荐.2  根据上面的需求,我想用委托异步来写, 下面是我的代码, 在WindowsForm1中, 这里加上20个委托.  public delegate string MyDelegate(string arg ); public List<string> lst;开始按钮触发事件: private void button1_Click(object sender, EventArgs e)
        {            for (int i = 0; i < 20; i++)
            {
                Class1 obj = new Class1();    // 类初始化
                MyDelegate dele = new MyDelegate(obj.GetList);  //初始化委托
                dele.BeginInvoke(i.ToString(), new AsyncCallback(BackDoWork), null);
            }}//  回调方法  private void BackDoWork(IAsyncResult isResult) 
        {           AsyncResult aResult = (AsyncResult)isResult;           MyDelegate Delt = aResult.AsyncDelegate   as MyDelegate;  // 找到源委托方法
           
           lst.Add( Delt.EndInvoke(isResult));  // lst只是一个简单的List<string>}//  按钮二的触发事件 private void button2_Click(object sender, EventArgs e)
        {
            foreach (string s in lst)
            {                this.label1.Text += lst.Count.ToString()+"--";                     }            lst.Clear();
        }Class1类的定义: public class Class1
    { public string GetList( string i ) 
        {                   return i;
            }      }  操作顺序: 先按按钮1,等待5秒左右让它生成数据,  再按按钮2,  原先我以为显示的数据应该是1--2--3--4--.....20可显示的却是20--20--20--20.....20 为什么会这样呢,  有没有办法解决.