using System;
using System.IO;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
public class Program
{
public static void Main(string[] args)
{
Read(File.OpenText("test.txt")); // content: "read from file"
Read(new StreamReader(new MemoryStream(
Encoding.UTF8.GetBytes("read from string")));
Console.WriteLine("{0}: {1}",
Thread.CurrentThread.ManagedThreadId, "main thread");
Console.ReadKey();
}
static async Task Read(StreamReader sr)
{
var s = await sr.ReadToEndAsync();
Console.WriteLine("{0}: {1}",
Thread.CurrentThread.ManagedThreadId, s);
}
}
出力:スレッドは "DoSthAsync待つ" に予定されている方法
3:ファイルから読み込む
1:文字列
1から読んで:メインスレッド
以上、は新しいスレッドを作成しますが、read from string
を作成しないのはなぜですか?
具体的には、非同期ファイルIOで新しいスレッドを完了する必要があるのはなぜですか?
基礎となる同期ファイルIOのラップされたバージョンだけですか?新しいスレッドを生成することによってディスパッチされますか?
私は、MemoryStreamからの読み込みについて本質的に非同期なものはないので、別のスレッドに送信する実際の作業はないという簡単な答えがあります。 –
あなたが探しているのは、C#の 'async' /' await'機能に関する完全なチュートリアルです。お気に入りのウェブ検索エンジンを使用して、これらのキーワードが何をするかを記述する1つまたは複数の_many_記事を検索する必要があります。これまでのコメントでは、ここでの特定の動作をまとめています。メモリ内のオブジェクトからの読み込みは同期的に完了できるため、別のスレッドに巻き込まれることはありません。 –