.NET 3.5 でも async / await
実際需要ないと思うけど、残念ながら学校の PC は Windows 7 のほぼ初期状態に近いので、 .NET 4 なんてないし、そもそも Windows Update のアップデートが必要なレベルなので相当やばい。そんな環境で動かすアプリでも async
/ await
使いたいな、というときに、いいライブラリがありました!世の中やる人はやるんですね(他力本願寺
AsyncBridge.Net35
AsyncBridge とか誰でも思いつきそうな名前で、実際 NuGet で探してみると 2 つ見つかりますが、こっちです。
AsyncBridge
AsyncBridge
Adds the new C#5 async features for .NET 4 projects
.NET 4 projects とか書いてありますが、ソースにも NuGet にも 3.5 版はあります。
PM> Install-Package AsyncBridge.Net35
NuGet Gallery | AsyncBridge - Async Support for .NET 3.5 0.2.0
これを NuGet からポンと入れれば
private async void Button_Click(object sender, RoutedEventArgs e) { await System.Threading.Tasks.TaskEx.Delay(TimeSpan.FromSeconds(3)); MessageBox.Show("3 seconds have passed"); }
のように普通に await
で書くことができます。
TaskEx
は .NET 4.5 で Task
に加わったメソッドっぽいですが、このへんは Microsoft.Bcl.Async と同じかな?
ライセンス
AsyncBridge は MIT License の下で公開されています。
AsyncBridge/readme.txt at master · OmerMor/AsyncBridge · GitHub
また依存ライブラリに Microsoft の TaskParallelLibrary があります。こちらは .NET 3.5 時代の Rx の一部だったやつみたいで、昔の Rx のライセンスで公開されています。
Reactive Extensions Eula
意外と Tips 系記事でライセンスについて言及されてなくて探すのだるいときって結構ありますよね…。