我使用ThreadPool与下面的代码: -
ThreadPool.QueueUserWorkItem
(o =>
MyFunction()
);
Run Code Online (Sandbox Code Playgroud)
我不确定o=>这段代码有什么作用.谁能帮我吗.
Rod*_*man 11
它描述了一个lambda(匿名)函数.在这种情况下,它是一个函数,它接受一个参数o,然后执行MyFunction(尽管在这种情况下它基本上抛弃了o的值).它相当于:
void Foo(object o) //We know that Foo takes an object and returns void because QueueUserWorkItem expects an instance of type WaitCallback which is a delegate that takes and object and returns void
{
MyFunction();
}
ThreadPool.QueueUserWorkItem(Foo) // or ThreadPool.QueueUserWorkItem(new WaitCallback(Foo));
Run Code Online (Sandbox Code Playgroud)
根据QueueUserWorkItem期望的任何内容推断o的类型.QueueUserWorkItem需要类型WaitCallback,因此在这种情况下,o应该是object类型,因为WaitCallback是具有一个返回void类型的参数的方法的委托.
至于这个特定代码片段的含义 ; 你基本上是将一个函数(工作项)添加到一个队列中,该队列将由池中的一个线程执行(当它变为可用时).这个特定的代码片段只是描述了一种很好的,简洁的传递函数的方式,而不必经历完全定义类方法的麻烦.
顺便说一下,我和其他人倾向于将=>读为'这样'.有些人将其视为"去".