[seasar-dotnet:1311] Re: [Quill] S2Windows.NETでの画面遷移について

koyak [E-MAIL ADDRESS DELETED]
2009年 5月 26日 (火) 00:09:11 JST


西山さん

小谷(koyak)です。

作者の方からコメントがあるかもしれませんが、、、

S2Windowsは私自身はまだ使ったことがないのですが、
FormBの表示内容が保持されるのは同じインスタンスが使い続けられるためです。
(Quillはsingletonでインスタンスを管理します)
そのため、仮にFormだけDisposeを呼ぶようにしたとしても、
次にそのフォームを表示しようとしたときに
リソースを解放(可能な状態に)したインスタンスを使って画面を
表示しようとしてしまうため、恐らく例外になります。
(実際に試したわけではありませんが)

初期化処理を実装&呼び出さずにデザイン時のままで表示させたい場合は
現バージョンでは

・QuillFormInterceptorを拡張して毎回インスタンスを作るようなInterceptorを実装して使う
・QuillFormInterceptorを使わずに普通のやり方と同じように
 Formを自分でnewしてShowDialogを呼ぶ。
(インジェクションが必要な場合はnewしたインスタンスをQuillInjector#Injectに渡す)
・QuillではなくS2Containerの方を使い、instance属性をprototypeにする
(参照:http://s2container.net.seasar.org/ja/dicontainer-reference.html#InstanceMode)

といったやり方になるのではないかと思います。


2009/05/25 11:08 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
> お世話になっております。
> 西山と申します。
>
> 今度VB.NET(2.0)で開発を行う予定です。
> Quillとを利用させていただこうと思ったのですが、S2Windows.NET
> を利用した際の画面遷移についていくつか質問させてください。
>
> 利用環境
>  VisualStudio 2008
> 言語
>  VisualBasic
> Seasar
>  S2Container.NET 1.3.15
>
> ・FormAから、FormBにIFormDispatcherを利用して遷移する際、
> FormBへの2回目の遷移では、以前の状態が保持されるのですが、こ
> れを回避する方法は無いのでしょうか。
>
> http://s2container.net.seasar.org/download/vbs2formsample-1.3.9.zip
> こちらのサンプルでは、FormのLoadイベント時に
> _InitializeControls()メソッドを呼んでその中で初期処理を行っ
> ているようですが、出来れば_InitializeControls無しに画面のデ
> ザイン時のままで表示させたいと思っております。
>
> ・FormをDisposeするのが.NETでは一般的とのことですが、これを
> 明示的に呼べればいいのでは無いかと思っております。
> ・QuillInjector.GetInstance().Destroy()を呼び出せば、Quillの
> 参照オブジェクトを全て破棄できるとのことですが、アプリケー
> ションの実行中(画面遷移先などで)にこのメソッドを実行しても
> 問題は無いのでしょうか?
> もしくは、対象FormだけDisposeするような機能は無いでしょうか?
>
> 今までJava(のWebアプリ)ばかりやっていて、.NETの開発自体に
> 慣れておらず、見当違いのことを言っているのかもしれません。
>
> 以上よろしくお願いいたします。
>
> --
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 株式会社フジミック システム開発センター ソフトウェア開発部
> 西山 創
> [E-mail]:[E-MAIL ADDRESS DELETED]
>
> 〒140-0002 品川区東品川3-32-42 フジテレビ別館7F
> [TEL]:03-5495-1060
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


seasar-dotnet メーリングリストの案内