【发布时间】:2015-10-19 07:04:23
【问题描述】:
我正在查看有关 RegisterWaitForSingleObject HERE 的 MSDN 并在示例中找到了这种用法 -
ti.Handle = ThreadPool.RegisterWaitForSingleObject(
ev,
new WaitOrTimerCallback(WaitProc),
ti,
1000,
false
);
WaitProc 是一个方法——
public static void WaitProc(object state, bool timedOut)
{
//Code
}
我还通过将 WaitProc 方法替换为与此类似的方法找到了相同的示例 -
ti.Handle = ThreadPool.RegisterWaitForSingleObject(
ev,
(state, timedOut) => {
//code blah blah
//manipulate state
//manipulate timedOut
}
ti,
1000,
false
);
这里我假设RegisterWaitForSingleObject 方法需要WaitOrTimerCallback 方法,编译器理解这一点并将(state, timedOut) 视为方法,因此可以在调用本身中使用变量。
这个概念叫什么?
它是如何工作的?
【问题讨论】:
-
它被称为 lambda 表达式,如果你不熟悉它,你可能应该先检查匿名方法以很好地掌握语法,然后检查 lambdas
标签: c# multithreading task-parallel-library threadpool