C#
単発タスク(Task.WaitAllとかで集約していないタスク)を使った非同期処理を扱うメソッドでの例外を投げる場合、 AggregateException をそのまま出すと、メソッドを呼ぶ側で InnerException をチェックしたりしないといけないので面倒です(面倒ですよね?…
複数のスレッドから触られる long 変数(64bit変数)の取り扱い。 Java メインの人は引っかかりそうなのでメモ。Java ではできる「volatile long」が C# では未サポート(コンパイルエラーになる)なので、 long 変数への Atomic な読み書きをするには読み書き…
TcpClient でコネクションを張る際の接続時タイムアウトをユーザコードで任意に指定しようとすると、次のようなコードが今風(C# 5.0 以降風)なのだろうか? try { int timeout = 接続タイムアウト(ms); TcpClient client = new TcpClient(); Task con_task =…
通常のメソッドを非同期化しようとしてハマった罠。 普段 C# を使いこんでる人は既知だろうからスルー推奨。次のような感じのコードで hoge を非同期化しようとする場合、 void Main() { try { hoge(); } catch (Exception e) { ※ 例外処理 } ※ 続きの色々な…
C# のジェネリクスの型パラメータを参照型に制約する方法 答え→ where T : class 以下言い訳。 キャッシュなクラスを書いててハマった。むしろMSDNの日本語訳に釣られたヽ(`д´)ノC# のジェネリクスの型パラメータの制約一覧は↓のページに公式としてまとま…