タグ

2015年8月30日のブックマーク (6件)

  • Unhandled Exception Handler For WPF Applications

    The article will demonstrate how you could handle Unhandled Exceptions from both UI and NonUI threads for your WPF application. Download source - 26.72 KB Introduction Exception handling is very vital for any software. We use our traditional way of handling exceptions of our code using Try/ Catch / Finally block to handle runtime exceptions. We write our code inside a try block and wait for the er

    hikobae
    hikobae 2015/08/30
  • Async/Await - Best Practices in Asynchronous Programming

    Avoid Async Void There are three possible return types for async methods: Task, Task<T> and void, but the natural return types for async methods are just Task and Task<T>. When converting from synchronous to asynchronous code, any method returning a type T becomes an async method returning Task<T>, and any method returning void becomes an async method returning Task. The following code snippet ill

    Async/Await - Best Practices in Asynchronous Programming
    hikobae
    hikobae 2015/08/30
  • neue cc - asyncの落とし穴Part3, async voidを避けるべき100億の理由

    だいぶ前から時間経ってしまいましたが、非同期の落とし穴シリーズPart3。ちなみにまだ沢山ネタはあるんだから!どこいっても非同期は死にますからね! async void vs async Task 自分で書く場合は、必ずasync Taskで書くべき、というのは非同期のベストプラクティスで散々言われていることなのですけれど、理由としては、まず、voidだと、終了を待てないから。voidだと、その中の処理が軽かろうと重かろうと、終了を感知できない。例外が発生しても分からない。投げっぱなし。これがTaskになっていれば、awaitで終了待ちできる。例外を受け取ることができる。await Task.WhenAllで複数同時に走らせたのを待つことができる。はい、async Taskで書かない理由のほうがない。 んじゃあ何でasync voidが存在するかというと、イベントがvoidだから。はい。b

    hikobae
    hikobae 2015/08/30
  • async/await ~非同期なライブラリは楽じゃない~ - 飽きっぽい人のブログ

    ※個人的な備忘録的なものです。 こっちとかこっちのが良くまとめられています。 ライブラリ制作者向けの内容になっているのでアプリ製作者にはあまり関係がないかもしれません なお、サンプルコードは全てWindowsストアアプリとして実行したものとします デッドロックで泣きを見ないように 下のようなライブラリのコードがあるとします gist11215254 このライブラリのDoAsyncは呼び出され方によってはデッドロックされてしまいます 下のコードがその例になります gist11215568 原因はTaskのWaitメソッドでロックしたスレッドに対して、HeavyWorkAsyncメソッドでワーカースレッドで作業していたTaskが元のUIスレッドに戻ろうとしたためです 図にすると以下のようになります Waitするなと思った方がいらっしゃるかもしれませんが、使用するのは自分ではなく他人のアプリ製作

    async/await ~非同期なライブラリは楽じゃない~ - 飽きっぽい人のブログ
    hikobae
    hikobae 2015/08/30
  • An other world awaits you

    2. A n o t h e r w o r l d a w a i t s y o u 別世界があなたを待っています C# 5.0 C# 4.0 • Async C# 3.0 • Dynamic • LINQ C# 2.0 これ • Generics C# 1.0 asynchrony • Managed 非同期 ※VB 7~11の歴史でもある 3. A n o t h e r w o r l d a w a i t s y o u 別世界があなたを待っています  こんな世界  フリーズしない世界  バッテリーの持ちがいい世界 C# 5.0 • Async  “今までも、俺ならできたよ”  訓練された人しかできない  訓練された人でも超大変 見合ったコストでは“できない”

    An other world awaits you
    hikobae
    hikobae 2015/08/30
  • async/awaitと同時実行制御

    C# 5.0のasync/awaitを使うと、多くの場面ではシングル スレッド的な動作になるし、多くの場面ではlock不要(結果的に、デッドロックが起こりようなくなる)になったりします。 ただし、「多くの場面で」。「必ず」ではないのがはまりどころ。いくつかの場面では、同時実行制御が必要です(普通にマルチスレッドの平行実行になるので、同時に同じデータにアクセスされる可能性を考慮しないとバグります)。 前提知識 いくつか、C# 5.0世代の非同期処理についての前提知識は、以下のスライド(先月末の.NETラボでの発表)を参考にしてください。 5~12ページ: async/awaitの書き方 17~22ページ: スレッドとそのコスト 24~26ページ: スレッド プール 29~32ページ: I/O完了待ちと非同期API 36~40ページ: UIスレッドとディスパッチャー 41~45ページ: 同期コ

    async/awaitと同時実行制御
    hikobae
    hikobae 2015/08/30