Read
同期方式を使用しているため、そうではありません
非同期で読みたい場合は、BeginRead
メソッドを使用する必要があります
以下は、 MSDNの BeginRead の使用例です。
private void ReadStreamAsyncImpl(Stream stream)
{
chunk = new byte[chunkSize];
stream.BeginRead(chunk,
0,
chunkSize,
new AsyncCallback(BeginReadCallback),
stream);
}
private void BeginReadCallback(IAsyncResult ar)
{
Stream stream = ar.AsyncState as Stream;
int bytesRead = stream.EndRead(ar);
StreamContentsAsString += StreamEncoding.GetString(chunk, 0, bytesRead);
if (bytesRead < chunkSize) {
// Finished
isOperationInProgress = false;
stream.Close();
if (null != ReadStreamCompleted) {
ReadStreamCompleted(this, new EventArgs());
}
} else {
ReadStreamAsyncImpl(stream);
}
}
つまり、ストリームの文字を自分で変換するのではなく、おそらく StreamReader を使用して読み取る必要があります。
.NET 4.5 を使用している場合は、以下のように ReadAsync を使用できます (再び から[MSDN][2]
) 。
private async void Button_Click(object sender, RoutedEventArgs e) { UnicodeEncoding uniencoding = new UnicodeEncoding(); 文字列ファイル名 = @"c:\Users\exampleuser\Documents\userinputlog.txt"; バイト[] 結果;
using (FileStream SourceStream = File.Open(filename, FileMode.Open))
{
result = new byte[SourceStream.Length];
await SourceStream.ReadAsync(result, 0, (int)SourceStream.Length);
}
UserInput.Text = uniencoding.GetString(result);
}