Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:Can';我不能在ThreadStart中使用匿名委托吗?_C#_Multithreading - Fatal编程技术网

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

C#:Can';我不能在ThreadStart中使用匿名委托吗?,c#,multithreading,C#,Multithreading,我不能有一个匿名委托声明,类似于以下内容: ThreadStart starter = delegate() { go(); }; ... static void go() { Console.WriteLine("Nice Work"); } // (or) ThreadStart starter=delegate() { Console.WriteLine("Hello");} 是的,你可以。真正的问题是

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

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

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

   // (or)

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

是的,你可以。真正的问题是什么

顺便说一下,您在第二个示例的末尾缺少一个分号:

ThreadStart starter=delegate() { Console.WriteLine("Hello");}
应该是:

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

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

您可以跳过ThreadStart。这应该行得通

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

你有什么错误?缺少分号?这是为我编写的

    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");

    }

是的,看起来不错。您到底遇到了什么问题?匿名委托是否在代码中的其他地方使用?我想知道这段代码是否不是针对.NETFrameworkV1.x的…为什么您认为这是不可能的?我让这个代码工作。唯一的问题是您试图从非UI线程操纵用户界面(Console.Writeline)。这是不允许的。@Dabblernl Console类的所有成员都是线程安全的。@Dabblernl调用Console.WriteLine()在运行入口点的线程之外的其他线程是完全合法的。另外,根据paper1337的问题,您的目标是框架的哪个版本?无法将匿名方法转换为ThreadStart类型。我正在使用ASp.NET3.5和C#3.0。只是编译与您提供的相同的示例。您是否包含了使用System.Threading的
?错误消息中还有其他文字吗?正如你所说,我漏掉了分号,现在可以了。非常感谢。我感觉我们正在处理一个旧的.net版本。那样的话,这就行不通了。