通用lambda方法签名
本文关键字:方法 lambda 通用 | 更新日期: 2023-09-27 18:07:33
我相信这是非常标准的东西,但我似乎无法理解这一点。
我正在编写一个简单的helper类,用于在单独的线程中执行代码。我很熟悉如何做这个,但不使用lambda。我猜这是关于一般的lambda使用,而不是线程。
我想写的是这样的:
ThreadedMethods.Parameterized<int>((i) => { for (;i < 10; i++;) DoSomething();});
和
ThreadedMethods.Parameterized<IEnumberable<Something>>((list) =>
{
foreach (var s in list)
{
s.SomeHeavyProcessing();
}
});
这可能吗?而且,既然lambda将访问方法调用范围内的所有内容,那么是否有任何理由首先尝试实现这一点呢?
当然有可能。你应该有
的实现class ThreadedMethods {
public static void Parameterized<T>(Action<T> action) {
// Start the action on a different thread using possibly ThreadPool.QueueUserWorkItem
}
}
然后你调用你的实现,正如你在你的问题中所展示的例子。
编辑:关于如何调用ThreadPool的更多信息。当您有Action
时,QueueUserWorkItem方法 public void StartOnDifferentThread<T>(Action<T> action, T input)
{
ThreadPool.QueueUserWorkItem(o => action((T)o), input);
}