OITA: Oika's Information Technological Activities

@oika 情報技術的活動日誌。

C#

Mono実行下でXElement.SetElementValueにバグ

.NET 4.0のアプリで、Monoを使ってLinuxで動かしたときに たまたまMonoのバグがあってはまったのでメモ。 LINQ to XMLの話になるのかな。

Directory.EnumerateFilesしながらファイルを増やすとどうなるか

.NET Framework 4で、配列を返すDirectory.GetFilesメソッドの代わりになる、 IEnumerableを返すDirectory.EnumerateFilesというメソッドが追加された。 GetFilesでは、すべてのファイルの検索を終えてから配列を作る必要があったのに対し、 EnumerateFiles…

ボタン連打時に多重にリクエストを溜め込まない

ボタンクリックイベント等のハンドラの中で 時間のかかる処理をしてUIを固めてしまうと、 その間に連続してクリックした分がメッセージキューに溜め込まれ UIが動き出してから何度も連続でクリックイベントが発生するような動きになる。 単純に↓こんなふうに…

アプリケーションのStartupPathをちゃんと取得する

アプリの実行ファイルがあるディレクトリのパスの取得の仕方について。 例えば実行ファイルと同じディレクトリにテキストを出力したいとき、 File.WriteAllText("hoge.txt", "テキストファイルの本文"); とでも書けば普通はちゃんと実行ファイルのディレクト…

FxCop:List<T>を公開してはいけないという話

前回クラス間インタフェースの話をしていたのでついでに。 .NETにはFxCopというコード解析ツールがあって、コードの改善ポイントを指摘してくれる。 これが指摘するルールの中に「CA1002: Do not expose generic lists」というのがあって、 Listは継承できな…

LINQの遅延評価と排他制御

作ったきりロクに更新していないブログなわけですけども SyntaxHighlighter Evolvedという、コードを表示するためのプラグインを入れてみたので*1 せっかくなので試してみるための記事を書きます。 最近C#のLinqというものが非常に便利なので クラス間のイン…