我是线程新手,所以如果我的问题属于业余级别,请原谅我。下面的例子是我想要做的简化版本。如果方法go是静态的,我希望它在Go不是静态时工作。我该如何使它发挥作用。
using System;
using System.Threading;
using System.Diagnostics;
public class ThreadPoolExample
{
static void Main()
{
for (int i = 0; i < 10; i++)
{
ThreadPool.QueueUserWorkItem(Go, i);
}
Console.ReadLine();
}
void Go(object data)
{
Console.WriteLine(data);
}
}
如果某人能够完成这项工作并添加一条通知,表明所有线程都已完成执行,那就太棒了。
答案 0 :(得分:5)
我怀疑它与Go是否静止无关,而是你不能从静态“Main”调用/使用实例方法“Go”这一事实。要么两者都需要是静态的,要么需要在类的实例上调用/使用Go,如:
ThreadPool.QueueUserWorkItem(value => new ThreadPoolExample().Go(value), i);
答案 1 :(得分:4)
以这种方式做到
class ThreadPoolExample
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
ThreadPoolExample t = new ThreadPoolExample();
ThreadPool.QueueUserWorkItem(t.Go, i);
}
Console.ReadLine();
}
void Go(object data)
{
Console.WriteLine(data);
}
}