如何在C#程序中使用线程池运行Main()方法?

3
我想知道如何在C#程序中像在F#中那样在线程池中运行Main()方法。请注意,只需保留HTML标记,不要提供解释。
let main() =
    Console.WriteLine("Hello World!")

do Task.Factory.StartNew(main).Wait()

在C#编程语言中,替代代码是什么?因为在简单的控制台应用程序中,只有一种方法可用:
static void Main() // or with int as the return type and args[]
                   // in method arguments but it's not important for this question

我希望你能在某处也像F#中那样添加一些东西:

do Task.Factory.StartNew(main).Wait()

还是我不知道C#程序执行的所有可能性?

6
你的 F# 的 main 实际上并不相同——F# 实际上创建了一个隐式函数来调用 do。等效的做法是在 F# 代码块上标注 [<Entrypoint>] - John Palmer
@JohnPalmer 是的,你说得对。 - user2402179
我认为放弃调用Main的想法可能是个好主意,如果你想递归调用函数,可以使用其他函数。我一直认为调用Main是不好的风格。 - violet_white
1
这完全没有意义。你只是在生成另一个线程,而原始线程执行Main时只是在等待。你不会从中获得任何东西,特别是并发性或性能。你会失去。 - usr
@usr - 这显然不是真正的(最终)代码。 - H H
@HenkHolterman 无论代码是什么,直接启动任务并等待它并不实用。我觉得这个问题距离现实太远,没有什么用处。 - usr
1个回答

2

我建议你不要那样做。我相当确定你应该编写其他函数,然后根据需要将它们添加到线程池中。

在大多数编程语言中,调用主函数是不好的风格;如果您想这样做,请编写其他函数来完成工作。

static void Function(){
    //Do stuff
}
static void Main(){
  TaskFactory.StartNew(Function).wait();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接