我试图更好地理解C#中的任务和异步操作,我已经运行了这个示例程序,但我对输出感到困惑.当我运行它时,程序有时不会在CallMethod中输出Console输出
int length = await task
Run Code Online (Sandbox Code Playgroud)
有时确实如此,但当我取消注释时
Console.ReadLine()
Run Code Online (Sandbox Code Playgroud)
它总是运行所有的CallMethod.
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace Tasks1
{
class Program
{
static void Main(string[] args)
{
Task task = new Task(CallMethod);
task.Start();
task.Wait();
//Console.ReadLine();
}
static async void CallMethod()
{
string filePath = "/Users/testname/Projects/Tasks1/Tasks1/Sample.txt";
Task<int> task = ReadFile(filePath);
Console.WriteLine("Other Work 1");
Console.WriteLine("Other Work 2");
Console.WriteLine("Other Work 3");
int length = await task;
Console.WriteLine(" Total Length: " + length);
Console.WriteLine("After work 1");
Console.WriteLine("After work 2");
}
static async Task<int> …Run Code Online (Sandbox Code Playgroud)