C# 是否可以将操作委托传递给ThreadPool.QueueUserWorkItem?

C# 是否可以将操作委托传递给ThreadPool.QueueUserWorkItem?,c#,asp.net,C#,Asp.net,我有以下(简化)代码: 我的问题是,在ProcessEmail中,是否可以将名为Method的操作参数传递给ThreadPool.QueueUserWorkItem方法 非常感谢您的帮助。没有,但您可以这样做: ThreadPool.QueueUserWorkItem(new WaitCallback(state=>{Method();})); 或者更简洁地说: ThreadPool.QueueUserWorkItem(state=>{Method();}); 本质上,您提供了一

我有以下(简化)代码:

我的问题是,在
ProcessEmail
中,是否可以将名为Method的操作参数传递给
ThreadPool.QueueUserWorkItem
方法


非常感谢您的帮助。

没有,但您可以这样做:

ThreadPool.QueueUserWorkItem(new WaitCallback(state=>{Method();}));
或者更简洁地说:

ThreadPool.QueueUserWorkItem(state=>{Method();});

本质上,您提供了一个新的匿名函数回调,该回调将调用调整为
方法()
回调。

否,但您可以执行以下操作:

ThreadPool.QueueUserWorkItem(new WaitCallback(state=>{Method();}));
或者更简洁地说:

ThreadPool.QueueUserWorkItem(state=>{Method();});

本质上,您提供了一个新的匿名函数回调,该回调将调用调整为您的
方法()
回调。

我更喜欢这种技术:

    ThreadPool.QueueUserWorkItem(nameOfAnonymousMethod =>
    {
        Method(...);
    });

我更喜欢这种技巧:

    ThreadPool.QueueUserWorkItem(nameOfAnonymousMethod =>
    {
        Method(...);
    });

我认为您需要使用自动重置事件或手动重置事件

简单代码:

public class Test
{
    private AutoResetEvent _eventWaitThread = new AutoResetEvent(false);

    private void Job()
    {
        Action act = () =>
        {
            try
            {
                // do work...
            }
            finally
            {
                _eventWaitThread.Set();
            }
        };
        ThreadPool.QueueUserWorkItem(x => act());
        _eventWaitThread.WaitOne(10 * 1000 * 60);
    }
}

我认为您需要使用自动重置事件或手动重置事件

简单代码:

public class Test
{
    private AutoResetEvent _eventWaitThread = new AutoResetEvent(false);

    private void Job()
    {
        Action act = () =>
        {
            try
            {
                // do work...
            }
            finally
            {
                _eventWaitThread.Set();
            }
        };
        ThreadPool.QueueUserWorkItem(x => act());
        _eventWaitThread.WaitOne(10 * 1000 * 60);
    }
}

Task.Run(Method)
更简单。
Task.Run(Method)
更简单。工作正常-谢谢。QueueUserWorkItem(新的WaitCallback(委托{Method();}));同样有效。好好工作-谢谢你。QueueUserWorkItem(新的WaitCallback(委托{Method();}));同样有效。