我有一个C#控制台应用程序,该应用程序开始运行时需要立即调用一个函数,在本示例中为ExecuteForLoop();

这是我的C#控制台应用程序开始运行的方式:

static void Main()
{
    ExecuteForLoop();
    Console.Write("Test");
}


在此示例中,功能ExecuteForLoop()可以做到这一点:

ExecuteForLoop()
{
    int example = 0;
    for(;;)
    {
        example++;
    }
}


问题是,如果我调用ExecuteForLoop()函数,则Console.Write("Test");函数将不会立即执行。一旦"Test"中的for(;;)循环停止循环,ExecuteForLoop()将仅输出到我的控制台。

如何调用ExecuteForLoop()并继续执行代码,以便在Console.Write("Test");函数内的for(;;)循环仍在运行时将功能ExecuteForLoop()输出到我的C#控制台应用程序中?

最佳答案

使用多线程:

static void Main()
{
    var t = new Thread(() => ExecuteForLoop());
    t.Start();
    Console.Write("Test");
    t.Join() // See this answer : http://stackoverflow.com/a/14131739/4546874
}


另外,这可能不完全是您想要的。您确定方法中需要无限循环吗?如果不是,请参见for-loop的语法并相应地设置退出条件。

不会打印"Test",因为在上一行中,您调用了ExecuteForLoop()方法,在该方法中程序进入了无限循环。由于两个语句都在同一个线程中,因此除非前一个线程在前一个线程,否则后者无法执行,这当然是不可能的。

10-07 14:28