しばやん雑記

ASP.NET Core とメイドさんが大好きなフリーランスのプログラマーのブログ

C#

Repository パターンまとめ

C#

まとめになるかはわかりません。タイトルを思いつかなかっただけです。Repository for ASP.NET MVC - しばやん雑記 で Repository の使い方をちょろーんと書きましたが、IRepository で共通部分くくりだしてるのに、実装はそれぞれの Repository 任せってダ…

.NET Framework における GC と Mutex の関係

C#

Mutex を使ってアプリケーションの多重起動をブロックする場合、検索して見つかるのは以下のような実装。 Mutex mutex = new Mutex(false, "hoge"); if (!mutex.WaitOne(false, 0)) { // 既に起動されている return; } Application.Run(new Form1()); Mutex …

オブジェクト初期化子を使う

ものすごく楽です、特にプロパティが多い WPF 周りですっきりと書けるのがうれしいところ。これは惚れます。 Window window = new Window { Title = "新しいウィンドウ", Width = 300, Height = 300 }; と書けるのですっきりしていい感じです、イベントも指…

COM の CoClass について調べた

C#

COM の CoClass を .NET から使う場合は、空のクラス定義に ComImportAttribute と GuidAttribute を付け、同じように定義しておいたインターフェースにキャストするのが一般的です。しかし以下のようにインターフェースを new しているように書かれているコ…

.NET Framework に用意された 3 種類の Timer

C#

.NET Framework には 3 種類のタイマークラスが用意されています。 System.Timers.Timer System.Threading.Timer System.Windows.Forms.Timer それぞれ実装方法の違いで挙動が変わっているので、簡単に調べたものをメモしておきます。 System.Timers.Timer …

.NET Compact Framework で Win32 メッセージを処理する

C#

.NET Compact Framework に用意されている Form クラスには WndProc メソッドが存在しないので、ウィンドウプロシージャの処理をオーバーライドできません。Win32 メッセージを処理するためには Microsoft.WindowsCE.Form.EventWindow を使えば、WndProc を…

Runtime Callable Wrapper (RCW) を使う時の注意点

C#

Runtime Callable Wrapper (RCW) のおかげで、COM を簡単に C# などから使うことが出来ますが、今回素晴らしくその挙動ではまったので忘れないうちにメモ。 Marshal.ReleaseComObject の呼び出し Marshal.ReleaseComObject を呼び出す必要がないのは、キャス…

System.Drawing.Color で定義されている色の一覧を取得する

C#

GDI+ の Color クラスで予め定義されている色がどんな色なのかわからなかったので、リフレクションを使って取得するコードを書いてみました。特に難しいことはしていません。 var baseColor = new Color(); foreach (var propertyInfo in typeof(Color).GetP…