- - PR -
ShowDialogでハングする。
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-21 19:34
いろいろと不手際で申し訳ございません。
守秘義務の関係から正確なコードを公開することは出来ません。 --- obj.Label.Text = "XXXXX"; //描画初期値設定 --- 上記は、あくまでも例です。 Form1クラスに宣言されているLabelプロパティですので、コンパイルは通ります。 「オブジェクトに宣言されている内部プロパティ」にアクセスするとご理解ください。 ----さんぷる---- public class Form1 : Form { private Label label1; public Label Label { get{ { // ここでODBC経由のDBアクセスがある。 // ※ここは正常に通過していることは確認済み。 } GC.Collect(); return label1; } set{ label1 = value; } } ---- 現象で記述忘れがありました。 ・Form1_LoadメソッドにBreakを設定してもここまでたどり着きません。 よろしくお願いいたします。 | ||||||||||||||||
|
投稿日時: 2006-06-21 20:05
では、あの Form は System.Windows.Forms.Form ではなく、 COPECHAN さんの '独自の型' なんでしょうか? (もしくは、ただの例?) でなければ、絶対コンパイルは通りません。
Form ではなく、Form1 に存在するメンバなのですよね?
この時、どこで制御が止まっているのか調査して頂けませんか?
それを '切り分け' るためには、新しい Form でミニマム コードを作成するようにしてください。 現状の情報からですと、ハングする要因は一切ありません。 情報外の部分が原因であると考えられますので、それを調査するためにも是非お願いします。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-06-21 20:09
Form obj = new Form1(); ↑これは Form1 obj = new Form1(); ↑これの間違いですか? 「さんぷる」で実行してみましたが、NullReferenceExceptionでした。 label1のインスタンスをどこで作っているのでしょう。。
| ||||||||||||||||
|
投稿日時: 2006-06-21 21:53
これを実行してハングアップするって言ってます?
| ||||||||||||||||
|
投稿日時: 2006-06-22 06:44
おはようございます。
ご意見ありがとうございます。 支離滅裂な文章で申し訳なく思っています。 現象の要約: ---- ShowDialog()もしくは、Show()メソッドを呼び出すが、 ダイアログ側でLoadイベントが発生しない(=画面が表示されない)。 ---- 多少構造は違いますが、基本的にはKazuki様の提示されているソースと同等です。 じゃんぬねっと様の仰るとおり再現性のあるコードを提示したいのですが、 本番のソース以外で現象の再現ができていません。 影響のないと思われる部分を削除して再現性のある部分のコードを抜き出している段階です。 現状作業の納期が押し迫っている関係から再現コードの提示には多少の時間を頂きたく思います。 | ||||||||||||||||
|
投稿日時: 2006-06-22 07:50
コンストラクタで何かしてるんじゃないですか?
_________________ 囚人のジレンマな日々 | ||||||||||||||||
|
投稿日時: 2006-06-22 08:12
コンストラクタには下記のコードしかありません。
category1からwarehouseCodeは、private string です。 ----ここから---- // // Windows フォーム デザイナ サポートに必要です。 // InitializeComponent(); category1 = ""; text1 = ""; text2 = ""; text3 = ""; text4 = ""; text5 = ""; ----ここまで---- 逆にお聞きしたいのですが、何らかのコードを仕込むことによって、 「Loadイベントが発生しない(発生させない)」事が可能なのでしょうか? そのようなことが可能なのであれば、そこから逆に原因を探ることも可能かもしれません。 | ||||||||||||||||
|
投稿日時: 2006-06-22 08:19
TopMost = true の場合は、Load イベントより前に Activated イベントなどが発生します。 そして、そこで無限ループに陥っているコードは、見かけたことはありますが... とにもかくにも、1 番情報を知ることができる COPECHAN さんが色々検証するしかありません。 ですから、先のレスでも切り分けるためにミニマム コードを作成しましょうと書きました。 再現できるタイミングさえ見つかれば、それで良いのですから。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |