У меня есть приложение, которое работает и имеет цикл с переменным числом итераций. У меня есть один вызов функции в этом цикле. Затем я попытался изменить программу, чтобы запустить функцию как отдельный поток. Я установил единичный тест для запуска, и приложение перестает работать до завершения любой работы.Приложение C# TPL перестает работать
Я установил цикл для одной итерации и отладки по одному потоку. Он останавливается рядом с верхней частью функции, а не всегда в одной строке, но в той же области, где я пытаюсь сделать копию объекта, который имеет таблицу данных и строки данных, где выбор может быть изменен в каждом потоке. Ниже приведен код и он постоянно останавливается при отладке в этой области, но линия, которая достигнута, различается.
// 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;
}
Как выглядит точка входа? Я предполагаю, что это консольное приложение, которое закончится, как только будет выполнен код точки входа. Но это просто предположение, не видя кода –