Я столкнулся с проблемой, которую, похоже, не могу обернуть.
private void IndexEntityType(Type targetType, bool onlyNew)
{
Logger.Debug("generating index for {0}", targetType);
using (var wrapper = SessionWrapper.For(targetType, true))
{
var session = wrapper.Session;
session.FlushMode = FlushMode.Never;
session.CacheMode = CacheMode.Ignore;
var entities = GetEntities(targetType, onlyNew, session);
Logger.Debug("Indexing {0} entities", entities.Count);
// Create a Full Text session.
using (var fullTextSession = Search.CreateFullTextSession(session))
using (var transaction = fullTextSession.BeginTransaction())
{
fullTextSession.CacheMode = CacheMode.Ignore;
foreach (var entity in entities)
{
fullTextSession.Index(entity);
}
try
{
transaction.Commit();
}
catch (Exception ex)
{
Logger.Error("could not commit fulltext session transaction", ex);
}
}
Logger.Debug("generated index for {0}", targetType);
}
ReQueueTimers(onlyNew);
}
Я пытаюсь отладить это и установить точки останова в первой строке (Logger.Debug) и последней строке (ReQueueTimers).
Однако при пошаговом выполнении кода последний вызов (ReQueueTimers (onlyNew)) никогда не вызывается и не достигает точки останова. Как это может быть? Компилятор как-то "удаляет его при оптимизации"?
Есть ли у кого-нибудь намеки на то, что может вызвать такое поведение?
РЕДАКТИРОВАТЬ: Это выполняется в несколько потоков, если это может иметь какое-либо отношение к нему.