Visual C#のフォームデザイナでイベントハンドラを指定すると落ちる

Windows7 x64上でVisual C# 2010 Expressを使ってとあるプログラムを開発。開発マシン上では何の問題もなかったのに、実行ファイルをXP x86に持って行くと、ウィンドウを表示することもなくエラーで落ちる。理由は不正なアドレス(0x4)へのアクセス。また対象フレームワークの問題Link かと思ったのですが、今回はフレームワークを変更しても解決しない。

こまめにログを出力させて突き止めたエラー発生箇所はForm1.InitializeComponent…Visual C#が自動コード生成した場所じゃないか。さらにInitializeComponentの内部を探ると、落ちた箇所は最後の方にあるthis.panel1.ResumeLayout(false);という行。デバッガで追ってもResumeLayoutを記述しているコードはなく、.NET Frameworkの中っぽい。

何がおかしいのか見当もつかないので、以下の手順で変更、その都度XP上で落ちるかどうかを確認。

  • Form1.panel1上に配置していたコントロールを別の場所に退避、panel1を削除 → 落ちない
  • panel1をつくり直すが、元にあったコントロールはpanel1上に配置しない → 落ちない
  • 新panel1上に退避していたコントロールを配置 → 落ちない
  • pane1のプロパティでSizeChangedイベントに自前のハンドラを設定 → 落ちた
  • 自前のイベントハンドラを何もしない関数に変更 → 落ちない

この自前ハンドラはpanel1のサイズに合わせて中のコントロールサイズを複雑に変えるものでして、panel1とpanel1上のコントロールのサイズを参照するため、コントロールの初期化が終わる前(=InitializeComponentが完了する前)に呼び出されたなら確かにまずい。しかしWindows7 x64のデバッガ上ではハンドラは呼び出されないんだけどなぁ。

解決策としては、
  • panel1のプロパティでのSizeChangedイベントハンドラの指定をしない
  • Form1_Loadでイベントハンドラを指定する
という方法で、XPでも落ちなくなりました。

[2010/11/6 追記] どうもWindows7とXPでコントロールの表示サイズが異なることが原因みたいです。今回のプログラムはWindows7で開発していたので、

  • XPで実行: panel1にアンカー(メインウィンドウのサイズに合わせて自身のサイズを変更する)が設定されており、panel1.ResumeLayoutでリサイズが発生、ハンドラが呼び出され落ちる
  • 7で実行: 開発時のサイズで表示できるのでリサイズが発生しない

ということは、XPで開発するとVista/7では落ちることになるのかな…


— posted by mu at 12:12 am   commentComment [4]  pingTrackBack [0]

PSOBBサービス終了を発表

MMRPG Phantasy Star Online Blue BurstLink が12/27 16:00を以てサービス終了となる通知が今日来ました。ドリームキャスト、初代PC、ゲームキューブ版はすでに終了となっており、最後の元祖PSO系統だったPSOBBもついに終わることに。

ずいぶんやってなかったものの課金だけは続けていたのは、最期を見届けようかなと思ってたわけで、ついにその時がやってきたようです。久々にやるつもりですが、パスワードなんだったっけ(^ ^;)

— posted by mu at 11:19 pm   commentComment [0]  pingTrackBack [0]

PSU守護者達の軌跡ιの珍しい画面

blog20101016-PSU_Iota

現在PSULink で配信中のミッション「守護者達の軌跡ι」開始直後の画面。このミッションの開始時は下のように横スクロールアクションゲームみたいな視点で固定されているのですが、何を間違ったか上のような通常ミッションに近い視点に。おまけに無音。

最初こそ戸惑ったものの、始めて見ると意外とやりやすい。私はフォース(魔法使いみたいなもの)でダムバータというテクニック(魔法)を使うのでなおさらやり易さを感じたりして。

これはいいなぁと思っていたら、パーティー内で私だけ次のステージに進まないというトラブルに見舞われ、あえなくミッション放棄。やっぱり異常事態だったのね。

— posted by mu at 01:41 am   commentComment [0]  pingTrackBack [0]

CEATEC Japan 2010

blog20101009-CEATECJapan_3DCam

TGSLink の反省もなく、また行ってまいりました幕張。3Dテレビでお腹いっぱい。東芝、シャープ、パナソニックを視聴してきましたが、
  • 板が奥行き方向に並んでいる感じで、立体絵本Link のように見えてしょうがない。
  • 鮮やかさに欠ける
    • 原理上高速で左右交互に片目を目隠ししているようなものなので、眼に入る光量が半減。
    • 液晶の場合、左右の画像を高速に切り替えるため残像が入りボケる。
  • 個人的経験上、どうしても3D IMAXで感じた迫力と比較してしまい見劣りする(ただし私にとって3D IMAXの迫力は画面の大きさによるものが大きい)。
とういう感じで、どうも今ひとつのめり込めませんでした。

写真は3Dカメラのデモ。左端にあるカメラで撮影された女性がその上の画面で3D画像として表示されるもの。しかしそんな技術に感心するよりも、閉鎖された部屋の中でひたすら単調な動きを繰り返すしかない女性の仕事が大変だなと思ってしまうあたりは、我ながら友達に「夢のないやつ(*1)」と言われただけある。

(*1) 東京ディズニーランドのエレクトリックパレードで、ブランコに乗っている着ぐるみの豹に対して「しっぽが命綱になってる(ブランコと金具で接続されている)」と指摘した時にに言われた

シャープの4色液晶テレビクアトロンLink は従来の3色と並べられると確かに鮮やか。だけど普段3色でも不足は感じないだろうなぁ、と思いつつBlu-rayを見慣れるとDVD画質が荒っぽく見えるように、4色に慣れると3色がひどく色あせて見えるのかもしれない。

そんな最新技術よりも何気に気に入ってしまったのは、三菱の倍速クリアピクチャー技術Link 。私はパソコンで地デジやDVD/Blu-rayを見ているのですが、横や縦に流れる文字がブレて見えることが気になっていました。クリアピクチャーだと文字が綺麗に流れますです、ハイ。テレビでは既に高級機種で搭載されていたそうですが、それがパソコン用ディスプレイとして登場。ちょっと値段高めですけどね。

ああ、あとシャープで裸眼(メガネなし)3D 液晶を見ましたが、全然3Dに見えませんでした orz ワタシノ メガ ワルイノカ

blog20101009-CEATECJapan_Kei

こちらの写真は先日Link も触れた地球シミュレータの後継機「京」を構成する1モジュール(富士通製)。「京」はこれの1万倍の計算能力だそうです(といって、これを1万台並べるわけではないはず)。

— posted by mu at 10:21 pm   commentComment [0]  pingTrackBack [0]

 

今日はドイツ人とPSU

以前フランス人とプレイしたことあるけど、今日はドイツ人だった。一緒に回った人全員が英語使えたのがラッキー。しかしネットの遅延があるというのにタイミング勝負が強いクエスト「守護者達の軌跡ι」を良くプレイできたもので。しかも説明しなくても半分くらいマップ理解してた。

— posted by mu at 02:30 am   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0240 sec.
prev
2025.7
next
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31