C#:我不能在ThreadStart中使用匿名委托吗?

时间:2009-10-12 19:32:06

标签: c# multithreading

我不能拥有匿名委托声明,类似于以下内容:

    ThreadStart starter = delegate() { go(); };
            ...

    static void go()
    {
      Console.WriteLine("Nice Work");
    }

   // (or)

   ThreadStart starter=delegate() { Console.WriteLine("Hello");}

3 个答案:

答案 0 :(得分:7)

您可以跳过ThreadStart。这应该有用。

Thread t = new Thread(() => 
{
  Console.WriteLine("Hello!");
});

答案 1 :(得分:4)

你得到什么错误?分号丢失?这为我编译。

    static void go()
    {
        Console.WriteLine("Nice Work");
    }

    public void Run()
    {
        ThreadStart starter1 = delegate() { go(); };

        ThreadStart starter2 = delegate() { Console.WriteLine("Hello");};

        ThreadStart starter3 = () =>  Console.WriteLine("Hello");

    }

答案 2 :(得分:1)

是的,你可以。什么是实际问题?

顺便说一下,你在第二个例子的末尾错过了一个分号:

ThreadStart starter=delegate() { Console.WriteLine("Hello");}

应该是:

ThreadStart starter = delegate { Console.WriteLine("Hello"); };

虽然我添加的间距是个人选择。