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();}));同样有效。