C# 使用wait时任务的函数是否执行相同的操作

C# 使用wait时任务的函数是否执行相同的操作,c#,asynchronous,delegates,C#,Asynchronous,Delegates,如果我创建一个Func并用两种不同的方法填充它,这两种方法都会异步执行吗 public async Task Execute() { Func<Task> myFunc = null; myFunc += async () => { await WriteCharacters(); }; myFunc += () => { return WriteCharacters(); }; awa

如果我创建一个
Func
并用两种不同的方法填充它,这两种方法都会异步执行吗

public async Task Execute()
{
    Func<Task> myFunc = null;
    myFunc += async () => {
        await WriteCharacters();
    };

    myFunc += () => {
        return WriteCharacters();
    };

     await myFunc();
}

static async Task WriteCharacters()
{
    using (StreamWriter writer = File.CreateText("newfile.txt"))
    {
        await writer.WriteAsync("Example text as string");
    }
}
公共异步任务执行()
{
Func myFunc=null;
myFunc+=async()=>{
等待写入字符();
};
myFunc+=()=>{
返回WriteCharacters();
};
等待myFunc();
}
静态异步任务WriteCharacters()
{
使用(StreamWriter writer=File.CreateText(“newfile.txt”))
{
wait writer.WriteAsync(“作为字符串的示例文本”);
}
}
关于这个代码,我有两个问题。添加到myFunc的第一个委托是否等同于添加的第二个委托


这些是如何执行的,它们是同时执行的,还是在执行第二个之前等待第一个返回?

是*,下面的示例应该会有所帮助

using System;
using System.IO;
using System.Threading.Tasks;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Before Execute ");
            Execute();
            Console.WriteLine("After Execute ");

            Console.ReadLine();
        }

         static async Task Execute()
        {
            Func<Task> myFunc = null;
            myFunc += async () => {
                Console.WriteLine("in async func");
                await WriteCharacters();
            };

            myFunc += () => {
                Console.WriteLine("in func");
                return WriteCharacters();
            };

            await myFunc();
        }

        static async Task WriteCharacters()
        {
            await Task.Delay(4000);
            using (StreamWriter writer = File.CreateText("newfile.txt"))
            {
                Console.WriteLine("Writeing the file");
                await writer.WriteAsync("Example text as string");
            }
        }
    }
}
使用系统;
使用System.IO;
使用System.Threading.Tasks;
名称空间测试
{
班级计划
{
静态void Main(字符串[]参数)
{
控制台写入线(“执行前”);
执行();
Console.WriteLine(“执行后”);
Console.ReadLine();
}
静态异步任务执行()
{
Func myFunc=null;
myFunc+=async()=>{
Console.WriteLine(“在异步函数中”);
等待写入字符();
};
myFunc+=()=>{
Console.WriteLine(“在函数中”);
返回WriteCharacters();
};
等待myFunc();
}
静态异步任务WriteCharacters()
{
等待任务。延迟(4000);
使用(StreamWriter writer=File.CreateText(“newfile.txt”))
{
Console.WriteLine(“写入文件”);
wait writer.WriteAsync(“作为字符串的示例文本”);
}
}
}
}
*第二个将在第一个方法到达await语句时启动