Недавно наткнулся на интересную статью, описывающуюу реализацию Comet приложения на ASP.NET MVC(в конце статьи есть ссылка на demo - открываем в 2-х браузерах/вкладках и переписываемся). Там есть интересный метод:
public static void CheckForMessagesAsync(Action> onMessages)
{
var queued = ThreadPool.QueueUserWorkItem(new WaitCallback(parm =>
{
var msgs = new List
((Action>)parm)(msgs);//что за операция? О_о
}), onMessages);
if (!queued)
onMessages(new List
ChatServer.CheckForMessagesAsync(msgs =>
{
AsyncManager.Parameters["response"] = new ChatResponse
{
messages = msgs
};
AsyncManager.OutstandingOperations.Decrement();
});
}
Хотя метод непонятен чуть менее, чем полностью, но что делает строка, отмеченая комментом? как это операция называется?
Не пожалею о разъяснении всего метода.
Ответ
((Action>)parm)(msgs);
В этой строчке переменная parm приводится к типу Action< T >. Он является делегатом, который можно вызвать. И он вызывается с параметром msgs
Касательно остального кода (оператора =>), возможно ясность внесут лямбда выражения
Комментариев нет:
Отправить комментарий