.net 如何向任务传递或冻结时间点值?
如何向任务传递或冻结时间点值 下面代码的问题是传递给DocFTSinXsCollection(SID)的SID不是在执行Task.Factory.StartNew时传递的,而是来自下一个rdr.Read()的SID.net 如何向任务传递或冻结时间点值?,.net,task,.net,Task,如何向任务传递或冻结时间点值 下面代码的问题是传递给DocFTSinXsCollection(SID)的SID不是在执行Task.Factory.StartNew时传递的,而是来自下一个rdr.Read()的SID 您需要将SID声明为while循环中的局部变量,以便每个闭包将获得自己的变量: while (rdr.Read()) { int SID = rdr.GetInt32(0); // other code Task.Factory.StartNew(()
您需要将
SID
声明为while
循环中的局部变量,以便每个闭包将获得自己的变量:
while (rdr.Read())
{
int SID = rdr.GetInt32(0);
// other code
Task.Factory.StartNew(() =>
{
// this often gets the new SID - I need the SID from when Task was started
DocFTSinXsCollection docFTSinXsCollection = new DocFTSinXsCollection(SID);
}
// other code
}
您需要将
SID
声明为while
循环中的局部变量,以便每个闭包将获得自己的变量:
while (rdr.Read())
{
int SID = rdr.GetInt32(0);
// other code
Task.Factory.StartNew(() =>
{
// this often gets the new SID - I need the SID from when Task was started
DocFTSinXsCollection docFTSinXsCollection = new DocFTSinXsCollection(SID);
}
// other code
}
在发布的代码中,只有一个变量称为SID。因此,每个闭包中都绑定了相同的变量。在发布的代码中,只有一个名为SID的变量。所以每个闭包中都绑定了相同的变量..现在和目前为止测试都很好。在接受之前还需要测试一些。你以前帮过我的,谢谢!测试现在和目前为止都很好。在接受之前还需要测试一些。你以前帮过我的,谢谢!