首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c# 多线程 匿名嘱托调用方法,方法代码没执行

2013-06-19 
c# 多线程 匿名委托调用方法,方法代码没执行vs2010 我使用线程数组创建多个线程,然后线程用匿名委托调用带

c# 多线程 匿名委托调用方法,方法代码没执行
vs2010 
我使用线程数组创建多个线程,然后线程用匿名委托调用带参数的方法,方法却没执行。
代码如下:


       Thread[] TdSend;
       //执行方法
        private void Send(string user,string pwd)
        {
          //代码块。这里在断点调试时,根本没有进入
        }
        
        private void btn_send_Click(object sender, EventArgs e)
        {
            DataSet ds = eDao.GetSendInfo();
            if (ds == null)
            {
                MessageBox.Show("获取信息失败!", "提示:");
                return;
            }
            dtAccount = ds.Tables["Account"];
            dtAddress = ds.Tables["Address"];
            TdSend = new Thread[int.Parse(tb_ThreadNum.Text)];
            for (int k = 0; k < TdSend.Length; k++)
            {
                string user = dtAccount.Rows[0]["UserName"].ToString();
                string pwd = dtAccount.Rows[0]["PassWord"].ToString();
                dtAccount.Rows.RemoveAt(0);
                TdSend[k] = new Thread(delegate() { Send(user, pwd); });
                TdSend[k].Start();
            }
        }

对线程不是太熟悉,请问这个是原因造成的?断掉调试 就没有进入过 Send 方法 多线程 C# 匿名委托
[解决办法]
static Thread[] TdSend;
        private static readonly object lck = new object();
        static void Main(string[] args)
        {
            TdSend = new Thread[3];
            string a = "1";
            string b = "2";
            for (int k = 0; k < TdSend.Length; k++) {


                TdSend[k] = new Thread(delegate() { test(a,b); });
                TdSend[k].Start();
            }
            int c=0;//断点1
            Console.ReadLine();
        }

        public static void test(string user, string pwd)
        {
            lock (lck)
            {
                int d;//断点2
            }
        }




这次进入的顺序是:断点2、断点1、断点2、断点2

好歹也进了方法,你的没进真不明白为什么了

热点排行