C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 処理が終わったときにウィンドウを閉じて終了したい


(過去ログ 75 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■44279 / inTopicNo.1)  処理が終わったときにウィンドウを閉じて終了したい
  
□投稿者/ 初心者 (76回)-(2009/12/03(Thu) 19:35:07)

分類:[C#] 

C#で開発を始めた初心者です。

public Form1()	{
	InitializeComponent();
	method();
	Close();
}
というように、処理が終わったときにウィンドウを閉じて終了したいです。
ところが、このように、アプリケーションの途中でClose()すると、Main()の
Application.Run(new Form1());
の行で、
System.ObjectDisposedException はハンドルされませんでした。
Message="破棄されたオブジェクトにアクセスできません。\r\nオブジェクト名 'Form1' です。"
というエラーが出ます。

終了する方法をアドバイスいただけないでしょうか。

引用返信 編集キー/
■44281 / inTopicNo.2)  Re[1]: 処理が終わったときにウィンドウを閉じて終了したい
□投稿者/ オショウ (445回)-(2009/12/03(Thu) 20:47:32)
No44279 (初心者 さん) に返信
> 終了する方法をアドバイスいただけないでしょうか。

this.Close();

で、終わりますが・・・

以上。
引用返信 編集キー/
■44282 / inTopicNo.3)  Re[1]: 処理が終わったときにウィンドウを閉じて終了したい
□投稿者/ よねKEN (430回)-(2009/12/03(Thu) 22:23:25)
プログラムがmethod()を呼び出して、即終了したいだけなら、
任意のクラスで、Mainメソッドを
public static void Main()
{
method();
}
のように定義するだけでよいかと。フォームは必要ありません。

> Application.Run(new Form1());

引数にフォームのインスタンスを取るApplication.Runメソッドは引数に渡されたフォームのShowメソッドを呼び出した場合と同じ状態にします。
しかし、

> public Form1() {
> InitializeComponent();
> method();
> Close();
> }

コンストラクタの中でいきなりCloseしてます。
コンストラクタの実行時点ではまだ表示(Show)されていないのに、
コンストラクタが終了した時点ではCloseされた状態になるので、それはまずいですよね。
#開けていない箱のふたは閉じられない、ので。

Closeメソッドの内部ではDisposeメソッドを呼んでいるので、それ以降のそのフォームに対する操作は怒られます。

> System.ObjectDisposedException はハンドルされませんでした。

そのため、破棄されたオブジェクトに対する操作として怒られます。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -