2

私は糸脱毛に慣れていないので、私の質問がアマチュアレベルである場合はご容赦ください。以下の例は、私がやろうとしていることの簡略版です。これは、メソッド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); 
    }
}

誰かがこれを機能させ、すべてのスレッドが実行を完了したという通知を追加できれば、それは素晴らしいことです。

4

2 に答える 2

5

Goが静的であるかどうかとは関係がないのではないかと思いますが、静的な「Main」からインスタンスメソッド「Go」を呼び出したり使用したりすることはできません。両方とも静的である必要があるか、次のようなクラスのインスタンスでGoを呼び出す/使用する必要があります。

ThreadPool.QueueUserWorkItem(value => new ThreadPoolExample().Go(value), i);
于 2012-05-25T00:19:26.867 に答える
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); 
    }

}
于 2012-05-25T00:30:42.990 に答える