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语句时启动