3

Async CTP ライブラリ v3.0 用に作成された記事C# Named Pipes with Asyncでは、.NET 4.5 でコンパイルされないコードが使用されています。具体的には

await pipe.WaitForConnectionAsync();

var message = await streamReader.ReadToEndAsync();

NamedPipeClientStreamのそのようなメソッドがないため、失敗します。

この点に関して、CTP と .NET 4.5 への組み込みの間に何か変更はありましたか? これを機能させるためのステップがありませんか?

4

1 に答える 1

8

Async CTP に実装された*Asyncメソッドは、一時的な拡張メソッドでした (つまり、関連する実際のクラスに追加されていない拡張メソッドでした)。AsyncRTM は、これらのメソッドを該当するクラスのインスタンス メソッドに"移動"しました。「移動」は拡張メソッドをコピーするほど簡単ではなく、作業/テスト/承認が必要だったと思います。いろいろな理由で動けなくなった方もいらっしゃると思います。 NamedPipeServerStream.WaitForConnectionAsync方法の一つと思われます。TaskFactory.FromAsyncメソッドを使用して、 /のペアTaskからオブジェクトを作成する必要があります。何かのようなもの:BeginWaitForConnectionEndWaitForConnectionawait

    await Task.Factory.FromAsync(pipe.BeginWaitForConnection,
        pipe.EndWaitForConnection, null);
    StreamReader reader = new StreamReader(pipe);
    await reader.ReadToEndAsync();
于 2012-08-21T02:47:05.800 に答える