Thread.Sleepなどを使用している既存のメソッドをラップする形で、非同期メソッドを作成したい
下記のような別スレッド上で使うことをメソッドがある場合、
(あくまで例ですので、これだと場合によっては永遠にループするぞ!などのツッコミはなしで……)
C#
1public string GetResponse() 2{ 3 StringBuilder response = new StringBuilder(); 4 while(true) 5 { 6 char c = io.Read(); // ブロックせずに値をすぐ返す、なにもない場合は0 7 if(c == 0) 8 { 9 Thread.Sleep(10); 10 continue; 11 } 12 if(c == '\n') break; 13 response.Add(c); 14 } 15 return response.ToString(); 16}
このメソッドそのものを変更せずに、このメソッドを内部で呼び出すasync/awaitを使用した非同期メソッドを作成する(Task<string>を返す非同期メソッドでラップする)ことは可能なのでしょうか?
また、その場合どのように作ればよいのでしょうか?
できればTask.Runなどを使用してスレッドプールなどの別スレッドで動作するのではなく、呼び出したスレッド上で非同期I/Oとして動作するようにしたいです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/19 00:04