繁体   English   中英

如何在C#中的第一个和第二个方法之后执行第三个方法

[英]how to execute a third method after first and second method in c#

我通过使用Task类在线程中运行了两种方法。 我有第三种方法正在主线程中执行。 我希望在第一个和第二个方法之后执行第三个方法。 在下面的代码中如何做到这一点。 Firstmethod()Secondmethod()Thirdmethod()将被执行

static void Main(string[] args)
{
    Task.Factory.StartNew(() => { Firstmethod();
    });
    Task.Factory.StartNew(() => { Secondmethod();
    });

        Thirdmethod();
    Console.ReadLine();
}

static void Firstmethod()
{
    for (int i = 0; i < 10; i++)
    {
        Console.WriteLine(i);
    }
}
static void Secondmethod()
{
    for (int i = 10; i < 20; i++)
    {
        Console.WriteLine(i);
    }
}
static void Thirdmethod()
{
    for (int i = 20; i < 30; i++)
    {
        Console.WriteLine(i);
    }
}

使用Task.WaitAll 在.NET 4.0中可用。

static void Main(string[] args)
{
    Task t1 = Task.Factory.StartNew(() => {
        Firstmethod();
    });
    Task t2 = Task.Factory.StartNew(() => {
        Secondmethod();
    });

    Task.WaitAll(t1, t2);
    Thirdmethod();
    Console.ReadLine();
}

尽管雅库布(Jakub)的答案是正确的,但它可能更有效。 使用Task.WaitAll阻止线程,而其他2个线程执行第一个和第二个操作。

不用阻塞该线程,您可以使用它执行一种方法,然后仅阻塞另一种方法。 这将仅使用2个线程而不是3个线程,甚至可能根本不会阻塞:

static void Main()
{
    Task task = Task.Factory.StartNew(() => FirstMethod()); // use another thread
    SecondMethod(); // use the current thread
    task.Wait(); // make sure the first method completed
    Thirdmethod();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM