Здравствуйте.
Есть статический метод:
System.Threading.ThreadPool.QueueUserWorkItem(System.Threading.WaitCallback);
WaitCallback — это делегат объявленный вот таким образом:
[ComVisibleAttribute(true)]
public delegate void WaitCallback (Object state)
Параметром в этот метод можно передать анонимный делегат:
System.Threading.ThreadPool.QueueUserWorkItem(delegate(object obj) { /*do something*/});
А почему тогда нельзя передать в Control.Invoke анонимный делегат?
Control.Invoke(delegate { /*do something*/ });
Выдаётся ошибка:
Argument '1': cannot convert from 'anonymous method' to 'System.Delegate'
А вот так работает:
Control.Invoke(new MethodInvoker(delegate { /*do something*/ }));
Здравствуйте, Divineshadow, Вы писали:
D>А почему тогда нельзя передать в Control.Invoke анонимный делегат?
D>D>Control.Invoke(delegate { /*do something*/ });
D>
Потому что в сигнатуре метода Control.Invoke тип параметра не является делегатом (класс System.Delegate не является делегатом, это базовый класс для делегатов).
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.