C#|プログラミングに魔法なんてない

HogeクラスからPiyoクラスをインスタンシング。

その時、PiyoクラスのコンストラクタでHogeクラスの参照を渡す

Piyoクラス内にHogeクラスのhogeHogeイベントのイベントプロシージャを作成

PiyoクラスDispose();

HogeクラスでhogeHogeイベント発生。

エラー発生、破棄されたオブジェクトにアクセス出来ません云々。

こんな感じです。油断してました。+=したエベントプロシージャはちゃんと-=で後始末しないといけませんね。VB.NETで言うと、AddHandler,RemoveHandler、だったかな?

なんていうか、その…、

ごめんなさい。

C#|二重起動を禁止して、コマンドライン引数を取得

 ”C# 二重起動 禁止”等で検索するとMutexを使った方法を紹介したページがヒットしますが、これでは後から起動されようとしたインスタンスのコマンドライン引数を取得出来ません。

 自分で、既に起動済みのインスタンスにコマンドラインを渡して、受け側で処理する様に実装しなければいけません。これでは面倒です。VB.NET 2005では簡単に二重起動を禁止して、引数も取得出来ました。

 同じクラスライブラリなのだから、VBに出来てC#に出来ない筈は無いと考え、調べてみました。下準備をすればVBと同じ方法で二重起動を禁止し、引数も取得出来ることがわかりました。以下にその方法を紹介します。

まず、”Microsoft.VisualBasic”をプロジェクトの参照に追加します。

そして、次の様にクラスを書きます。

using System.IO;
using Microsoft.VisualBasic.ApplicationServices;
class myApplication:WindowsFormsApplicationBase{
  public myApplication()
    : base() {
    this.EnableVisualStyles = true;
    this.IsSingleInstance = true;
    this.MainForm = new Form1();//スタートアップフォームを設定
    this.StartupNextInstance += new StartupNextInstanceEventHandler(myApplication_StartupNextInstance);
  }
   void myApplication_StartupNextInstance(object sender, StartupNextInstanceEventArgs e) {
    //ここに二重起動されたときの処理を書く
    //e.CommandLineでコマンドライン引数を取得出来る
  }
}

myApplication_StartupNextInstanceメソッドの中には、VB.NETの方法の時と同じ様にコーディング出来ます。詳しくは検索すればわかりやすいページがあるでしょう。

次に、プログラムのエントリポイントを書き換えます。

using System;
static class Program {
  [STAThread]
  static void Main(string[] args) {
    //Application.EnableVisualStyles();
    //Application.SetCompatibleTextRenderingDefault(false);
    //Application.Run(new Form1());
    myApplication winAppBase = new myApplication();
    winAppBase.Run(args);
  }
}

 こんなに簡単な方法があるのに、検索しても紹介されているのを見たことがありません。この方法に何か問題があるのかも知れませんね。

 知っている方がいましたらコメント下さい。

AMP開発中

 AMPとは、あにすが作ったオーディオメディアのプレーヤーという意味です。作業用BGMプレーヤーとして邪魔にならないデザインと、面倒な機能は一切廃した簡単仕様を目指して開発中です。ちなみに中の人はWindowsMediaPlayerです。

 どれ位簡単かというと、Fittleとかfoobar2000とか、あの辺りより更に簡単です。

 やっぱり自分が欲しい機能だけを付けると使い勝手がいいですね。自分用としては既に完成していて、重宝してます。

 友人にアイコンを担当して貰ってるので、アイコンが出来たらスクリーンショットを公開しようと思います。ひとまず僕が書いたアイコンで動かしてるのですが、とても恥ずかしいので公開出来ません。

久し振りの3本ローラー

 3本ローラーに乗りました。30分回しました。僕の家はアパートの2階なのですが、幸い隣室も階下も誰も住んでいません。回し放題です。

 CDを掛けながら軽い強度で回しました。最後の3分だけギヤを掛けて踏んだのですが、振動でCDが飛びっ放しでした。

 やはり室内でローラーは厳しいようです。