System.IO
обеспечивает метод File.ReadAllTextAsync
для .Net Standard
> 2,1 и .NET Core
2.0. Если вы используете C# 7.1 или выше, вы можете использовать File.ReadAllTextAsync
внутри основной функции напрямую.
static async Task Main(string[] args)
{
var astr = await File.ReadAllTextAsync(@"C:\Users\User\Desktop\Test.txt");
Console.WriteLine(astr);
}
К сожалению, если вы не используете C# 7.1
или выше, вы не можете использовать Async
Главный. Вы должны использовать Task.Run для вызова asyn c методов.
static void Main(string[] args)
{
var astr=Task.Run(async () =>
{
return await File.ReadAllTextAsync(@"C:\Users\User\Desktop\Test.txt");
}).GetAwaiter().GetResult();
Console.WriteLine(astr);
}
В случае, если вы используете .NET Framework
, тогда вы должны использовать FileStream
, потому что System.IO
не обеспечивает метод File.ReadAllTextAsync
.
private static async Task<string> ReadAllTextAsync(string filePath)
{
using (FileStream sourceStream = new FileStream(filePath,
FileMode.Open, FileAccess.Read, FileShare.Read,
bufferSize: 4096, useAsync: true))
{
StringBuilder sb = new StringBuilder();
byte[] buffer = new byte[0x1000];
int numRead;
while ((numRead = await sourceStream.ReadAsync(buffer, 0, buffer.Length)) != 0)
{
string text = Encoding.Unicode.GetString(buffer, 0, numRead);
sb.Append(text);
}
return sb.ToString();
}
}