-3

Java では を拡張Threadまたは実装できますRunnableが、C# で同等のものは何ですか? 実行可能な実装に少し似ているものしか見つかりませんが、有用なものは何もありません。

4

1 に答える 1

8

いいえ、ThreadC# では拡張しません。通常、Java でも拡張しないでください。Runnable(インターフェースを実装するだけです。)

代わりに、新しいスレッドを開始する場合は、ThreadStartデリゲートまたはデリゲートのいずれかのインスタンスを作成し、ParameterizedThreadStartそれを のコンストラクターに渡しThreadます。

短いが完全な例を次に示します。

using System;
using System.Threading;

class Test
{
    public static void Main(string[] args)
    {
        ThreadStart action = Count;
        Thread thread = new Thread(action);
        thread.Start();
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Main thread...");
            Thread.Sleep(1000);
        }
    }

    static void Count()
    {
        for (int i = 0; i < 20; i++)
        {
            Console.WriteLine("Secondary thread...");
            Thread.Sleep(300);
        }        
    }
}

デリゲートの詳細については、トピックに関する私の記事を参照してください。

スレッド化の詳細については、Joe Albahari のスレッド化チュートリアルを参照してください。

正直なところ、最近はSystem.Threading.Tasks.Task代わりに使用する必要があります。生のスレッドだけでなく、より高いレベルの抽象化を使用してみてください。

于 2012-11-14T15:29:06.810 に答える