我一直在到处寻找,我需要一个解决方案,让我添加200-300个工作与某个函数,接受参数。我知道委托和对象是作为单个参数的,但我希望有一些东西可以允许使用不同的参数来排队任务,而不是只使用对象参数。
任何帮助都将不胜感激。
发布于 2011-08-29 07:44:29
你可以这样做:
void MyMethod(int param)
{
....
}
...
ThreadPool.QueueUserWorkItem(_ => MyMethod(1));
ThreadPool.QueueUserWorkItem(_ => MyMethod(2));
ThreadPool.QueueUserWorkItem(_ => MyMethod(3));
...
ThreadPool.QueueUserWorkItem(_ => MyMethod(42));另一种选择是让MyMethod接受Object类型的参数,并使用QueueUserWorkItem的第二个重载
void MyMethod(object param)
{
int value = (int)param;
....
}
...
ThreadPool.QueueUserWorkItem(MyMethod, 1);
ThreadPool.QueueUserWorkItem(MyMethod, 2);
ThreadPool.QueueUserWorkItem(MyMethod, 3);
...
ThreadPool.QueueUserWorkItem(MyMethod, 42);发布于 2011-08-29 10:57:38
简单示例:
for (int i = 0; i < 100; i++)
{
System.Threading.ThreadPool.QueueUserWorkItem(k =>
{
TestMethod(k);
}, i);
}发布于 2011-08-29 07:43:39
没有什么可以阻止您将对象列表作为对象参数发送,因此在实践中,您可以将任意数量的参数传递给线程函数。
https://stackoverflow.com/questions/7224773
复制相似问题