2

async/await キーワードを使用できるようにするために非同期 CTP ライブラリを使用するアプリケーションがあります。C# の実際のバージョンである 5.0 にはデフォルトでこの機能があり、非同期 CTP のすべての正確なバージョンではないことを知っています。たとえば、非同期 CTP では TaskEx が存在し、C# 5.0 では存在せず、Task.

しかし、これらの違いにもかかわらず、非同期メソッドによって返される Task オブジェクトが同じかどうかを知りたいです。

私の場合、リポジトリがデータベースにアクセスするためのインターフェイスがあります。現在、このリポジトリは C# 4.0 を使用するクラスによって実装されていますが、asyc CTP を使用して Task を返し、await キーワードを使用できます。しかし、将来的には、C# 5.0 を使用する他のクラスを使用したいと考えています。

インターフェイスで Task を返すメソッドを定義する場合、C# 4.0 を使用するクラスと C# 5.0 を使用するクラスでこのインターフェイスを実装できますか? または、非同期 CTP と C# 5.0 の Task オブジェクトに違いはありますか?

PD: C# のバージョンを修正しました。つまり、C# 4.5 ではなく 5.0 です。

PD2: VS2012 では、Microsoft.Bcl.Async と Microsoft.CompilerServices.AsyncTargetingPack を使用して、.NET 4.0 をターゲットとするプロジェクトで asyn/await キーワードを使用できるようです。しかし、私はそれらの違いが何であるかわかりません。

4

1 に答える 1

2

It's the same Task type that is returned. This type was introduced in .NET 4.0 as part of the Task Parallel Library.

However, I would upgrade everything to VS2012 if I were you, replacing the Async CTP with Microsoft.Bcl.Async. The underlying compiler types are different (and mutually incompatible), and there are known bugs in the Async CTP as well as installation issues.

于 2012-12-09T21:32:08.947 に答える