读书人

c# 多线程 匿名嘱托调用方法方法代码

发布时间: 2013-06-19 10:26:41 作者: rapoo

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

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

读书人网 >C#

热点推荐