我有一个正在运行的应用程序,并且有一个迭代次数可变的循环。我在这个循环中有一个函数调用。然后我尝试更改程序以将函数作为单独的线程启动。我设置了要运行的单元测试,并且应用程序在完成任何工作之前停止运行。
我已将循环设置为在一个线程上进行一次迭代和调试。它在函数顶部附近停止运行,并不总是在同一行,而是在我尝试复制具有数据表和数据行的对象副本的同一区域,在每个线程中可以更改选择。以下是代码,在该区域进行调试时它会一直停止,但到达的行会有所不同。
// main thread called by unit test
...
for(...
{
Task compute = Task.Factory.StartNew(() => results.Add(Compute(originalObject)));
}
...
private ReturnObject Compute(MyObject originalObject)
{
...
// near top of function after some assignment statements
// of some string and boolean variables
MyObject myObject = originalObject.Copy;
// never makes it to the next line
...
}
// MyObject class
private MyObject(DataTable dtTable)
{
_dataService = new DataService();
_dataTable = dtTable.Copy();
_dataRows = _dataTable.Select();
}
public MyObject Copy()
{
MyObject copy = new MyObject(_dtTable);
return copy;
}
// DataService class
public DataService()
{
_oleDbConnection = null;
}