我收到了这段代码
ThreadPool.QueueUserWorkItem(delegate(object state) { MessageBox.Show("somethinghere"); });
有没有办法更好地做到这一点?我使用delegate(object state)
但我甚至不需要这个,但是当我使用delegate()
时,它会给我一个错误!
答案 0 :(得分:1)
你可以这样做:
ThreadPool.QueueUserWorkItem(delegate { ... });
或
ThreadPool.QueueUserWorkItem(_ => { ... });
答案 1 :(得分:0)
您可以完全省略参数列表:
ThreadPool.QueueUserWorkItem(delegate { MessageBox.Show("somethinghere"); });
或者你可以使用lambda:
ThreadPool.QueueUserWorkItem(s => MessageBox.Show("somethinghere"));
答案 2 :(得分:0)
方法ThreadPool.QueueUserWorkItem期望委托作为参数声明如下:
public delegate void WaitCallback(object state);
如果你使用delegate(),它会给出一个错误,因为你没有匹配委托签名,这需要一个对象作为输入,void需要返回。
您可以使用lambda表达式,如下所示:
ThreadPool.QueueUserWorkItem(state => MessageBox.Show("somethinghere"));
或者您可以创建一个匹配该签名的方法:
private void waitCallBackMethod(object state)
{
MessageBox.Show("somethinghere");
}
然后在这样的电话上使用它:
ThreadPool.QueueUserWorkItem(waitCallBackMethod);