Разница лямбда выражения, делегата (\анонимного делегата), методом (\анонимных методов)

Всё просто:

В чём отличия: лямбд, делегатов, анонимных делегатов, методов, анонимных методов?

У меня в проге сучилась такая штуковина.

Я в качестве обработчика события написал лямбду. В теле лямбды дёргался метод класса в котором объявлялась лямбда. Событие происходит в отличном от главного потоке.

Метод вызывался норм, но в теле метода используется аксесор этого же класса. И при обращении к нему (просто при обращении к аксесору) летит ошибка - "нуль референс эксепшен". Как будто класс в котором происходят все манипуляции - не существует.

Проблему решил, заменив лямбду на приватный метод класса.

Объясните что я нарушил и из-за чего была такая проблема?