2012-12-09 9 views
2

async/await 키워드를 사용할 수 있도록 비동기 CTP 라이브러리를 사용하는 응용 프로그램이 있습니다. C# 5.0의 실제 버전에는 기본적으로이 기능이 포함되어 있으며 비동기 CTP . 예를 들어 비동기 CTP에 TaskEx가 있고 C# 5.0에 Task가 없다는 것을 의미합니다.C# 4.0, async CTP 및 async C# 5.0은 호환됩니까?

그러나 이러한 차이점을 보완하기 위해 비동기 메서드에서 반환되는 Task 개체가 같은지 아닌지 알고 싶습니다.

필자의 경우 데이터베이스에 액세스 할 수있는 저장소를위한 인터페이스가 있습니다. 이 저장소는 C# 4.0을 사용하는 클래스에 의해 구현되지만 asyc CTP를 사용하여 Task를 반환하고 기다리는 keyowrd를 사용할 수 있습니다. 하지만 앞으로 C# 5.0을 사용하는 다른 클래스를 사용하고 싶습니다.

Interace에서 작업을 반환하는 메서드를 정의하는 경우 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 키워드를 사용할 수있는 것으로 보입니다. 그러나 나는 그들 사이에 어떤 차이가 있는지 모른다.

+3

[C# 5.0] (http://stackoverflow.com/questions/247621/what-are-the-correct-version-numbers-for-c)를 의미합니까? – rae1

+0

예, C# 5.0 및 .NET 4.5를 의미합니다. –

답변

2

동일한 Task 유형이 반환됩니다. 이 유형은 Task Parallel Library의 일부로 .NET 4.0에 도입되었습니다.

그러나 내가 당신이라면 비동기 CTP를 Microsoft.Bcl.Async으로 대체하여 모든 것을 VS2012로 업그레이드 할 것입니다. 기본 컴파일러 유형 이며 서로 호환되지 않으며 비동기 CTP 및 설치 문제에 알려진 버그가 있습니다.

+0

Microsoft.Bcl.Async와 Microsoft.CompilerServices.AsyncTargetingPack의 차이점은 무엇입니까? 나는 ATP가 Bcl 이전에 릴리스이지만 Bcl은 베타이고 ATP는 최종 버전임을 알았다. –

+0

ATP가 VS2012 용 비동기 CTP를 업데이트하려는 첫 번째 시도라고 생각합니다. Bcl.Async는보다 포괄적 인 접근 방식입니다 (더 많은 플랫폼 지원). 나는 Bcl.Async가 ATP를 비하 할 것으로 기대한다. 그러나 AFAIK, Microsoft는 이것을 언급하지 않았습니다. –