C#threadpooling麻烦

时间:2012-05-25 00:12:06

标签: c# threadpool

我是线程新手,所以如果我的问题属于业余级别,请原谅我。下面的例子是我想要做的简化版本。如果方法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); 
    }
}

如果某人能够完成这项工作并添加一条通知,表明所有线程都已完成执行,那就太棒了。

2 个答案:

答案 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); 
    }

}