Application.MainWindow プロパティの自動設定

同じチームの方に教えてもらった仕様

 

Application.MainWindow プロパティ (System.Windows)

 

MainWindow には、AppDomainインスタンス化される最初の Window オブジェクトへの参照が自動的に設定されます。

え、マジかってなった。(常識かもしれないけど。。。)

 

MainWindowに設定しているWindowが、立ち上がるに、いろいろ起動前のチェック処理とかしてるんだけど、そのときに当然エラーや不正を確認した場合はメッセージ出して、アプリケーションを落とす等の処理を入れてるんですが。

そのエラーメッセージってのは、PrismのInteractionRequestでWindow継承したクラスで自作したエラーダイアログ表示してるんだけど、こいつがMainWindowに設定されてしまってこいつが表示されたらすぐに落ちてしまうってことが起こってたらしい。

しかも、同僚の方が実装してた処理はその処理によって、MainWindowの内容が変化するような処理だったから、チェック処理やその実装する処理の前にMainWindowをインスタンス化しても、処理の内容が反映されないからどうしようか。ってなっていたみたい。

以前僕が自分でOnStartupイベントハンドラ内をいじってたときに実装してた起動前のチェック処理は、ダイアログが表示された(エラーと判定された)ら、アプリケーションの起動はせずに落とす処理だったから、気づかなかった。

いや確かに、InteractionRequestでエラーダイアログを連続で2回表示する瞬間があったんだけど、なぜか2回目が表示されなくて、えーーなんでだなんでだってずっと悩んでたんだけど、この仕様を知って合点がいった。。。

 

じゃあ、どうすんのってことになって、結局、チェック処理の前に、一度MainWindowをインスタンス化してMainWindowプロパティを設定して、チェック処理が終わったら

新しくインスタンス化してそいつをMainWindowプロパティに設定し、一度目に設定したMainWindowをクローズさせるというなんともすっきりしない方法でとりあえず。

 

なかなか気持ち悪くて、なにかアプリケーション立ち上がる前に、エラーメッセージとか出す時の正しいやり方を知りたくて家帰ってからも少し調べたけど、結局わからなかったナー

 

常日頃思うけど、サーチ力とデバッグ力と、英語力が足らない。

今回は機械翻訳が割とまともだったから良いけど、日本語になってないの結構あるし英語読めるようにならなきゃなぁ~、とは思いつつもなかなか手がつかない。。。

 

 

今日はこんな感じ。

完璧主義者

自分の性格をコントロールできるようになりたい。

 

 

開発する速度 本当に遅いなぁ。って開発をしててふと感じました。

 

仕事が丁寧で遅い人に共通する、たった1つの問題点とその対策。 - プロジェクトマネジメントの話とか

 

このエントリによって、完璧主義者な自分が根強くいることを気づかされました。

 

心配性、不安症なのでしょうか。

開発でいえば、はじめは形なんて凝らなくていいから、なんでもいいから動くものをさっさとつくれ!!っていう罵声を浴びそうなくらい、導入部分から凝ろうとしてしまう。

たとえばだけど、

・MVVMを準拠しよ~

・クラスをしっかりわけよ~

・メンバのコードビハインドべたうちはやめよう~

・Commandを使おう~

WPFで開発しよう~

とかとか。挙句の果てに、セオリー知らないことで悩むとセオリー調べ始める。

 

もうなんでもいいからとりあえず動くもの作るようにしようほんと。

 

開発だけじゃなくなんでもそうだけど、ビビったり完璧が良かったりで慎重になりすぎで全然行動できない自分がいる。

 

更に仕事のメンバーにも、こうしたほうがよいのかなぁああしたほうがよいのかなぁなんて言ってしまっていることもある。

 

 

これからは、できるかぎり割り切るようにしていこうと思う。

非同期のI/O

ログのファイル出力ってどう実装するのがよいだろう。ストリーム生成して用意されてるWriteLineAsync()使って一行一行出力しては破棄してってやってるからか、死ぬほど重くなる。

それ使わずに、生成から破棄までを非同期にしたらだいぶマシになったけど、非同期をAsyncAwaitに任せてるからか、アプリの本来のやりたい非同期処理が、なかなか始まらない。
きっとキューの中にデバッグの非同期処理がたくさん発行されちゃってなかなか処理されてないのだろうけども。。。

スレッドプールって複数作れて、最大スレッド数とか指定できないかなぁ。

開発のこと中心のメモ帳

2014年 10月頃から開発関係の仕事に従事し始めた。
本格的なのは、同年12月だっただろうか。

今更だけどわかったことわからないこととかメモ残したりするとよいかなって思って残そうと思う