Передача анонимного делегата потоку… почему это работает?

) В моей программе мы разбиваем большой объем данных, который необходимо просмотреть по четырем потокам .

Thread one = new Thread(delegate() { NewMethod(recordsSplitIntoQuarters[0], param2, param3, param4, param5); });
Thread two = new Thread(delegate() { NewMethod(recordsSplitIntoQuarters[1], param2, param3, param4, param5); });
Thread three = new Thread(delegate() { NewMethod(recordsSplitIntoQuarters[2], param2, param3, param4, param5); });
Thread four= new Thread(delegate() { NewMethod(recordsSplitIntoQuarters[3], param2, param3, param4, param5); });

Наши стандарты кодирования требуют, чтобы мы соответствовали StyleCop, так сказать, и StyleCop требует следующего:

SA1410: Удалите круглые скобки из анонимного метода, поскольку список параметров делегата пуст.

Это дает мне эту ошибку компилятора:

Вызов неоднозначен между следующими методами или свойства: 'System.Threading.Thread.Thread (System.Threading.ParameterizedThreadStart)' и 'System.Threading.Thread.Thread (System.Threading.ThreadStart)'

Я изучил объекты ThreadStart и ParameterizedThreadStart, и я просто не могу понять, как сделать то, что мне нужно, с любым из этих объектов.

Мой вопрос: как работают анонимные делегаты? Во что они компилируются? В конце концов, мне придется заставить это работать без анонимных делегатов, но я не знаю, с чего начать.

Спасибо за помощь,

Seeker

6
задан seekerOfKnowledge 30 November 2010 в 20:48
поделиться