У меня есть почти такой код:
public class WCFService
{
public OperationResult Create(...)
{
List<SomeClass> classList = new List<SomeClass>();//Items are got from db using NHibernate
...
Thread t = new Thread(delegate () {
foreach ( item in classList)
{
Method(item);
}
}
...
return new OperationResult();
}
public void Method ( List<SomeClass> list) //doesn't use NHibernate Session
{
Conslole.Writeline(list.ToString());
}
}
void main()
{
WCFService service = new WCFService();
service.Create(...);
}
После выполнения в выводе консоли остается только часть списка. Я думаю, что Method не может получить доступ к элементам списка. При отладке вместо значения переменной появляется следующее сообщение: «Оценка функции отключена, потому что истекло время предыдущей оценки функции. Вы должны продолжить выполнение, чтобы включить функцию оценки». Или исключение LazyInitialization "Не удалось инициализировать прокси - нет сеанса". Проблема в сеансе NHibernate или что-то еще? И как я могу это решить?
Метод находится в отдельном потоке, потому что он занимает слишком много времени, и результат создания должен быть возвращен как можно быстрее.