.NET 一般.NETフレームワークの使い方、ライブラリなどストリームの内容を別のストリームにコピーするあるストリームから読み出したデータを、別のストリームに書き込む処理が、.NET4から1つのメソッドで簡単に行えるようになりました。 私はストリーム間のデータ転送処理を書くことも多いので、この方法でちょっとは楽になりそうです。 【参考】ストリームを簡単にコピーするには? ZIPファイルを扱うDotNetZipというライブラリを使えば、ZIPファイルを扱うプログラムをかける。 IISを操作するC#のコードから、IISを操作するサンプルコードとその方法が紹介されています。 microsoft.web.administration.dllを参照設定することによって利用できるらしいですが、IIS7に付属しているようです。 具体的なサンプルコードが、MSDNにもあります。 RFC非準拠のメールアドレスの扱い.NET4では、RFCに準拠しないメールアドレス(ピリオドが連続しているメールアドレスなど)が扱えるようになっています。 現在実行中のメソッド名と、クラス名を取得する方法MethodBaseクラスのGetCurrentMethodメソッドを呼び出すことで、現在実行中のメソッド名を取得することができます。 戻り値はMethodBaseクラスであるため、さらに以下のコードで、どのクラスのどのメソッドを実行中かも取得できます。 これを応用すれば、実行中のメソッド名などを容易にログに記録できます。 CSVファイルの仕様RFCで、CSVファイルの書式仕様について規定がある。 Excelのソフトもこの仕様に沿ったフォーマットで、CSVファイルの読み込み、書き出しができます。 単体テストを複数のCPUコアで並列実行する方法VisualStudio2010に単体テスト機能がありますが、複数のCPUコアを使って複数の単体テストを同時に並列実行する方法が書かれています。 単体テストでのHttpContextクラスの挙動単体テスト実行中のHttpContextは、テストメソッドごとに初期化される。 HTML Agility Pack HTMLのソースを解析し、タグの要素を抽出できるライブラリです。 IMEで入力された日本語の読みを取得http://www.atmarkit.co.jp/fdotnet/dotnettips/875imeyomi/imeyomi.html IDisposableの実装http://gushwell.ldblog.jp/archives/51931181.html 正規表現パスワードとして次の要件を必要とする場合、
これを表した正規表現は次の通り。 [\w!"#$%&'()=\-~^|\\`@{[+;*:}\]<,>\.?/_]{8,} .NETで簡単に月末の日付を求める方法こちらのサイトにある記事で、ある月の日数(例:1月なら31、10月なら30)を求めるメソッドが、.NETで標準で用意されていることを知りました。長年.NETやってますが、これは知らなかった。 これまで仕事上、いろんな人たちが、月末の日付を求めるオリジナルなロジックを作り込んでいる現場をたくさん見てきました。 かゆいところに手が届くメソッドが、意外と.NETにはたくさんあるものですね。 文字コードの判別ライブラリReadJEncというライブラリが個人的には一番優秀に感じました。 ダウンロード: 公式サイト: 関連サイト情報サイト
.NETアプリ内で発生した例外をいち早くキャッチする方法アプリ内で発生した例外を一括して処理する仕組みが.NETにはあります。 AppDomainクラスに、FirstChanceExceptionイベントというエラー処理用のイベントがあることを、恥ずかしながら最近知りました。 このイベントでは、catchできなかった例外だけでなく、そもそもcatchされる直前の時点で呼び出されるイベントです。 例外処理の幅が広がる一方、FirstChanceException内で例外が発生すると無限ループに陥るなど、使いどころ・使い方にちょっと工夫が必要になるようですね。 【例外をまとめてトラップするには?】 コレクションクラスの処理速度比較(オーダー比較)以下は、MSDNのサイトよりまとめたもの。
アプリケーションアーキテクチャ「アプリケーションアーキテクチャガイド」のページへのリンク ClickOnceClickOnceのちょっとしたワンポイントテクニックについて書かれています。 windowsサービス開発効率よくWindowsサービスを開発・デバッグできるツール.NETで開発したWindowsサービスを、簡単に動作確認、デバッグするためのツール「topshelf」がとても便利です。 UnicodeとシフトJISとで、文字の比較順序が異なる二つの文字を、UnicodeとシフトJISとでそれぞれ文字コード順で比較したときに、結果は一般的に同じとは限りません。 逆に、文字コード順にソートされていることが分かっているが、どの文字コードでソートしているかが分からないとき、「本」「部」の2文字で比較すれば判断することが可能になります。 マルチスレッド処理.NET4のマルチスレッド処理.NET4では、System.Threading.Tasks名前空間にあるParallel.Invokeメソッドを使うことで、複数のメソッドを簡単にマルチスレッドで実行することができる。 【参考】http://www.atmarkit.co.jp/fdotnet/csharp4/csharp4_02/csharp4_02_01.html このページでは、CPUに存在するコア数を超えてマルチスレッド処理を行った場合、逆にパフォーマンスが下がることがあることも指摘している。これも合わせて参考になる。 さらに、.NETで稼動コンピュータのCPUコア数を知る方法もあるようです。 これを併用すれば、搭載されているCPUコア数を元に最適なスレッド数で処理を実現するコードも書けそうです。 非同期メソッドを同期メソッドとして動かしたい場合非同期メソッドに戻り値がある場合は、以下のように実装する。
非同期メソッドに戻り値がない場合は、何らかの方法があるのかもしれないがうまくいかなかった。 HttpClientクラスでHTMLをダウンロード時、応答がなくなった場合の対処法.NET4.5で登場した、HttpClientクラスはとても便利です。 ただ注意点もあります。HttpClientクラスでは非同期によるダウンロードメソッドが用意されていますが、場合によってはスレッドデッドロックが発生し、結果が返らない状態が永遠に続く、という現象に陥ることがあります。 私もその現象が発生しましたが、ConfigureAwaitメソッドを呼び出して解決することができました。 ※「スレッド デッドロック ConfigureAwait」で検索すれば、いろいろな情報が得られます。
|