Korzystanie z async-oczekuj on.net 4

Obecnie zaczynam tworzyć aplikację, która zyskałaby wiele z funkcji asynchronicznego oczekiwania w C # 5. Ale nie jestem pewien, której wersji VS i środowiska asynchronicznego użyć.

Patrząc na wykresy popularności systemu operacyjnego, będę musiał obsługiwać Windows XP przez kolejne trzy lata. Wygląda na to, że. NET 4.5 działa tylko na nowszych wersjach systemu Windows, więc muszę kierować. NET 4.0. Maszyny deweloperskie używają Windows 7, więc używanie nowszej wersji VS nie jest problemem.

Teraz Ja aby to zrobić, należy najpierw wybrać kompilator:

  • VS2010 z AsyncCTP
  • [[9]} VS2012 Preview (i finalny po przybyciu), ustawienie celu na. Net 4.0
  • Mono (wygląda na to, że 2.12 ma asynchroniczne-czekam, wolę / am used to VS over MonoDevelop as IDE)

Który ma mniej błędów code-gen? Patrząc na Jon Skeet ' s blog VS2012 Preview używa nigdy generator kodu niż CTP.

I co ważniejsze, który runtime do użyć?

Czy VS2012 zawiera redystrybucyjny tryb asynchroniczny do użytku z. Net 4?

Udało mi się skompilować kod, z podglądem, odwołując się do środowiska uruchomieniowego AsyncCTP. Ale ponieważ CTP ma dziwne warunki licencyjne, nie wygląda to na dobre rozwiązanie długoterminowe.

Czy powinienem użyć implementacji strony trzeciej? Może mono ma taki?

Do dystrybucji biblioteki wolę po prostu umieszczenie dll w tym samym katalogu co aplikacja, zamiast jakiegoś rodzaj instalatora.

Chciałbym również, aby moje binaria działały bez zmian na mono+Linux / MacOS. Tak więc środowisko uruchomieniowe powinno być albo kompatybilne z tym, co mono (prawdopodobnie 2.12) ma wbudowane, albo zezwalać na użycie na innych systemach operacyjnych niż Windows.

Author: CodesInChaos, 2012-02-02

5 answers

Microsoft wydał Async Targeting Pack (Microsoft.Bcl.Async) przez Nuget jako zamiennik AsyncCTP.

Możesz przeczytać więcej na ten temat tutaj: http://blogs.msdn.com/b/bclteam/archive/2013/04/17/microsoft-bcl-async-is-now-stable.aspx.

Możesz przeczytać o poprzedniej wersji tutaj: http://blogs.msdn.com/b/lucian/archive/2012/04/24/async-targeting-pack.aspx .

Ponieważ ta paczka jest oficjalnie wspierana, teraz wierzę, że najlepszym rozwiązaniem dla kierowania XP + async byłoby użycie Visual Studio 2012 + C # 5 + Async Targeting Pack.

Jeśli jednak czujesz potrzebę targetowania. NET 3.5, nadal możesz użyć (my) AsyncBridge dla. NET 3.5 .
 106
Author: Omer Mor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-05 10:44:00

Jeśli jesteś otwarty na rozważanie innych języków. Net, F# może rozwiązać twój problem. Posiada asynchroniczne wyrażenie obliczeniowe{} od lat i jest wstecznie kompatybilny nawet z. Net 2.0. Minimalne wymagania to Windows XP SP3. Runtime można pobrać tutaj .

 24
Author: Marc Sigrist,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-26 14:55:49

Jeśli chcesz być w stanie dystrybuować swoje oprogramowanie, myślę, że rozwiązanie Mono jest naprawdę jedyną opcją w tej chwili. Mówisz również, że chcesz, aby efekt końcowy działał na Mono pod Linuksem i OS X. kierowanie na Mono na początek wydaje się naturalnym rozwiązaniem.

Następny numer to IDE. MonoDevelop oczywiście działa dobrze, ale mówisz, że wolisz Visual Studio.

Greg Hurlman stworzył profil do kodowania na Mono 2.8 z Visual Studio. W przypadku kontynuacji z nim może być w stanie wskazać ci właściwy kierunek rozwoju przeciwko Mono 2.11/2.12 w Visual Studio.

Oczywiście istnieje również Mono Tools dla Visual Studio , który jest produktem komercyjnym. Zakładam, że nadal jest oferowany przez Xamarin .

Możesz również uruchomić wymagane zespoły profili 4.5 z Mono na górze. NET, ale nie próbowałem tego. Profil 4.5 jest ścisłym super-zestawem API 4.0. Może spróbuj i zgłoś się.

EDIT: wygląda na to, że możesz teraz użyć Visual Studio Async CTP w produkcji

Oto co jest napisane na stronie pobierania :

Zawiera nową EULA do użytku produkcyjnego. Uwaga-niniejsza licencja nie stanowią zachętę do wykorzystania CTP do produkcji kod. CTP pozostaje nieobsługiwanym I używanym na własne ryzyko Podgląd Technologii. Otrzymaliśmy jednak wiele próśb od deweloperzy do korzystania z CTP dla kodu produkcyjnego, a więc zmieniły się pozwolenie na to.

 3
Author: Justin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-08 08:19:58

Możliwe jest użycie wersji beta VS 12 do targetowania. NET 4.0 przy użyciu async / wait.

Musisz skopiować kod do swojego projektu, który zawiera typy, na których opiera się kompilator.

Szczegóły tutaj

Edit: wykorzystaliśmy tę technikę i przekształciliśmy ją w bibliotekę open source o nazwie AsyncBridge: https://nuget.org/packages/AsyncBridge

 3
Author: Alex Davies,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-19 09:24:32

Jeśli chcesz zacząć dystrybuować swoje oprogramowanie po wydaniu MS C# 5.0, możesz zacząć je rozwijać używając AsycnCTP. W przeciwnym razie nie polecam ci go używać, ponieważ jest to po prostu CTP, a nawet beta. Można go zmienić bardzo blisko fazy beta i Wydania. Może być niestabilny, itp.

Jeśli chcesz wprowadzić łatwe operacje asynchroniczne w swojej aplikacji, polecam użycie Reactive Extensions i rzeczy zbudowanych na wierzchu( Reactive UI, itp.), to po prostu beautiul.

Jeśli chodzi o VS2012, zawiera również ten sam asynchroniczny CTP, o ile pamiętam z mojego/ / Build / tablet, który MS dał mi na tej konferencji.

 2
Author: Alexey Raga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-06 11:09:36