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

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

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

インスタンスが設定さていない


(過去ログ 6 を表示中)

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

■6595 / inTopicNo.1)  インスタンスが設定さていない
  
□投稿者/ サマー 一等兵(21回)-(2006/09/19(Tue) 22:31:04)

分類:[VC++(C++/CLI)] 


分類:[VC++(C++/CLI)] 

[環境]
windows XP
Visual C++ 2005
Microsoft SQL Server

[テンプレート]
Windowsフォームアプリケーション

[質問]
インスタンスが設定されてない場合再度gcnewするコードを書きたいのですが、
インスタンスが設定されていないことを判定するにはどうしたらよいでしょうか。

0
引用返信 編集キー/
■6597 / inTopicNo.2)  Re[1]: インスタンスが設定さていない
□投稿者/ ダッチ 二等兵(12回)-(2006/09/19(Tue) 22:49:47)

分類:[VC++(C++/CLI)] 

> [質問]
> インスタンスが設定されてない場合再度gcnewするコードを書きたいのですが、
> インスタンスが設定されていないことを判定するにはどうしたらよいでしょうか。

C++ はまったく詳しくありませんが、
Web 検索をつかって調べてみました。

インスタンスが設定されていない状態がどういう状態かというと
何も入っていない状態
つまり NULL です。

C++ では
オブジェクト == NULL や
nullptr を使用して判断できそうです。

また、インスタンスが破棄されている場合を判断したいばあいには、
Control.Disposing で判断できるでしょう。

C++ を勉強されたばかりなのであれば
書籍を購入してみることをお勧めします。

0
引用返信 編集キー/
■6601 / inTopicNo.3)  Re[2]: インスタンスが設定さていない
□投稿者/ 中博俊 神(737回)-(2006/09/19(Tue) 23:49:09)

分類:[VC++(C++/CLI)] 

えっへっへお勧めの本がございやすよ(^^
http://www.amazon.co.jp/exec/obidos/ASIN/4797336277

0
引用返信 編集キー/
■6605 / inTopicNo.4)  Re[3]: インスタンスが設定さていない
□投稿者/ Blue 軍曹(76回)-(2006/09/20(Wed) 00:30:21)

分類:[VC++(C++/CLI)] 

No6601に返信(中博俊さんの記事)
> えっへっへお勧めの本がございやすよ(^^
> http://www.amazon.co.jp/exec/obidos/ASIN/4797336277
じつは、もう既におすすめ済みだったりして。

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200606/06060082.txt

質問者は、基礎なんかお構いなしに進んでいくようです。
(そのつど掲示板は、流石に。。。)

0
引用返信 編集キー/
■6679 / inTopicNo.5)  Re[2]: インスタンスが設定さていない
□投稿者/ サマー 一等兵(22回)-(2006/09/21(Thu) 21:48:44)

分類:[VC++(C++/CLI)] 

子フォーム(koform)をばつボタンでクローズしたのち、親フォームより
再度子フォームを起動するときに、子フォームが存在しない場合のみ
再度インスタンスを生成するために、以下のようなコードを親フォーム
記述しましたが、

if (this->koform->Disposing == true) {
this->koform = (gcnew koform());
}

System.ObjectDisposedException' の初回例外が System.Windows.Forms.dll で発生しました。
破棄されたオブジェクトにアクセスできません。
オブジェクト名 'koform' です。

のように、if文の条件が効かないようです。

また、
if (this->koform == nullptr) {
this->koform = (gcnew koform());
}
のようにしても、同様の結果になりました。原因不明で対処にこまっていますので
よろしくおねがいします。





0
引用返信 編集キー/
■6680 / inTopicNo.6)  Re[3]: インスタンスが設定さていない
□投稿者/ επιστημη 准尉(116回)-(2006/09/21(Thu) 21:58:37)
επιστημη さんの Web サイト

分類:[VC++(C++/CLI)] 

> 子フォーム(koform)をばつボタンでクローズしたのち、親フォームより
> 再度子フォームを起動するときに、子フォームが存在しない場合のみ
> 再度インスタンスを生成するために、以下のようなコードを親フォーム
> 記述しましたが、

お構いなしに gcnew しちゃあかんのでしょうか?
どーせガベコレされるんやろし。


0
引用返信 編集キー/
■6690 / inTopicNo.7)  Re[4]: インスタンスが設定さていない
□投稿者/ なちゃ 二等兵(3回)-(2006/09/22(Fri) 02:27:27)

分類:[VC++(C++/CLI)] 

IsDisposed だったらいけるんでは?
っていうかDisposingは意味が違うと思う…


0
引用返信 編集キー/
■6695 / inTopicNo.8)  Re[5]: インスタンスが設定さていない
□投稿者/ ダッチ 一等兵(21回)-(2006/09/22(Fri) 08:52:41)

分類:[VC++(C++/CLI)] 

No6690に返信(なちゃさんの記事)
> IsDisposed だったらいけるんでは?
> っていうかDisposingは意味が違うと思う…
本当ですね。
間違えてしまいました。ごめんなさい。

0
引用返信 編集キー/
■6736 / inTopicNo.9)  Re[6]: インスタンスが設定さていない
□投稿者/ Jitta 准尉(106回)-(2006/09/22(Fri) 23:00:39)
Jitta さんの Web サイト

分類:[VC++(C++/CLI)] 

 Closing で、クローズすることを Cancel して Hide しないと、Show した Form を Close すると Dispose されますよ。
# 日本語じゃねぇな

ってことで、επιστημηさんの『お構いなしに gcnew しちゃあかんのでしょうか?』


> IsDisposed だったらいけるんでは?
だけど、「子フォームが存在しない場合のみ再度インスタンスを生成する」ということとは、違いますね?
Dispose されているけど、インスタンスは存在しています。
# 言葉遊び、ごめんなさい


0
引用返信 編集キー/
■6739 / inTopicNo.10)  Re[7]: インスタンスが設定さていない
□投稿者/ なちゃ 二等兵(6回)-(2006/09/23(Sat) 01:44:38)

分類:[VC++(C++/CLI)] 

> だけど、「子フォームが存在しない場合のみ再度インスタンスを生成する」ということとは、違いますね?
> Dispose されているけど、インスタンスは存在しています。

ぶっちゃけDisposingが使えない!!てとこに突っ込んだだけだったわけでござい。


0
引用返信 編集キー/
■6770 / inTopicNo.11)  Re[5]: インスタンスが設定さていない
□投稿者/ サマー 一等兵(23回)-(2006/09/24(Sun) 19:24:20)

分類:[VC++(C++/CLI)] 

Disposeされても、インスタンスが存在するということがいまいちわからないの
ですが、gcnewしないわけにはいかないので、

if (this->koform->IsDisposed == ture ) {

this->koform == (gcnew koform() );

}

として、期待の動作を得ることができました。皆様、親切に答えていただいて
ありがとうございました。それとも、gcnewせずともDisposeされたインスタンス
を復活する方法があるでしょうか?

0
引用返信 編集キー/
■6773 / inTopicNo.12)  Re[6]: インスタンスが設定さていない
□投稿者/ ダッチ 一等兵(23回)-(2006/09/24(Sun) 21:37:08)

分類:[VC++(C++/CLI)] 

No6770に返信(サマーさんの記事)
> Disposeされても、インスタンスが存在するということがいまいちわからないの
> ですが、gcnewしないわけにはいかないので、
>
> if (this->koform->IsDisposed == ture ) {
>
> this->koform == (gcnew koform() );
>
> }
>
> として、期待の動作を得ることができました。皆様、親切に答えていただいて
> ありがとうございました。それとも、gcnewせずともDisposeされたインスタンス
> を復活する方法があるでしょうか?

まず、間違った情報を教えてしまいまして失礼いたしました。

Dispose したということはリソースを破棄したということですので
インスタンスを復活することはできないと思います。

ではなぜ、インスタンスが残っているかというと
.NET Framework ではガベージコレクションというものでメモリの管理を行っています。
そのガベージコレクションで破棄されたインスタンスが回収されない限り
インスタンスが消えることはありませんので、残っているということになります。

それと、解決チェックを忘れずに。

0
引用返信 編集キー/
■6774 / inTopicNo.13)  Re[7]: インスタンスが設定さていない
□投稿者/ επιστημη 少尉(131回)-(2006/09/24(Sun) 22:18:31)
επιστημη さんの Web サイト

分類:[VC++(C++/CLI)] 

> Dispose したということはリソースを破棄したということですので
> インスタンスを復活することはできないと思います。
>
> ではなぜ、インスタンスが残っているかというと
> .NET Framework ではガベージコレクションというものでメモリの管理を行っています。
> そのガベージコレクションで破棄されたインスタンスが回収されない限り
> インスタンスが消えることはありませんので、残っているということになります。

で、そのインスタンスは早晩ガベージコレクタが回収してくれるんだから、
「おかまいなしにgcnewしてはいかんのか?」と言うてるわけです。


0
引用返信 編集キー/
■6777 / inTopicNo.14)  Re[8]: インスタンスが設定さていない
□投稿者/ ダッチ 一等兵(24回)-(2006/09/24(Sun) 22:59:46)

分類:[VC++(C++/CLI)] 

No6774に返信(επιστημηさんの記事)
> で、そのインスタンスは早晩ガベージコレクタが回収してくれるんだから、
> 「おかまいなしにgcnewしてはいかんのか?」と言うてるわけです。

それは表示するフォームを何個でも表示していい場合は OK でしょうね。
でも同じフォームが画面上に一つしか表示させたくない場合は NG だと思います。

今回の場合は後者の方だと私は思っていました。

0
引用返信 編集キー/
■6779 / inTopicNo.15)  Re[9]: インスタンスが設定さていない
□投稿者/ επιστημη 少尉(134回)-(2006/09/24(Sun) 23:07:46)
επιστημη さんの Web サイト

分類:[VC++(C++/CLI)] 

>>で、そのインスタンスは早晩ガベージコレクタが回収してくれるんだから、
>>「おかまいなしにgcnewしてはいかんのか?」と言うてるわけです。
>
> それは表示するフォームを何個でも表示していい場合は OK でしょうね。
> でも同じフォームが画面上に一つしか表示させたくない場合は NG だと思います。
>
> 今回の場合は後者の方だと私は思っていました。

#6679 に:
子フォーム(koform)を×ボタンでクローズしたのち、親フォームより
再度子フォームを起動するときに、子フォームが存在しない場合のみ
再度インスタンスを生成するために、以下のようなコードを親フォーム
記述しましたが…

とあります。"クローズしたのち"という条件があるからには子フォーム
がなくなってる(orいずれなくなる)のは明らかかな、と。


0
引用返信 編集キー/
■6780 / inTopicNo.16)  Re[10]: インスタンスが設定さていない
□投稿者/ サマー 一等兵(25回)-(2006/09/24(Sun) 23:34:01)

分類:[VC++(C++/CLI)] 

子フォームは最大一個しか表示しないつもりなので、gcnewしてもいい
ということですかねえ?大筋解決したのでこの質問は閉じることにします。
ありがとうございました。

解決済み
引用返信 編集キー/
■6782 / inTopicNo.17)  Re[11]: インスタンスが設定さていない
□投稿者/ επιστημη 少尉(135回)-(2006/09/24(Sun) 23:44:41)
επιστημη さんの Web サイト

分類:[VC++(C++/CLI)] 

No6780に返信(サマーさんの記事)
> 子フォームは最大一個しか表示しないつもりなので、gcnewしてもいい
> ということですかねえ?大筋解決したのでこの質問は閉じることにします。
> ありがとうございました。

いやいや、だから、子フォームが高々一個しか表示されないよう作られている
(たとえば子フォームがモーダルだとか)ならお構いなしにgcnewしていいけど、
そうでないなら高々一個しか表示されないように実装せんと、その"つもり"の通りに動かんでしょう。実際のとこどーなのよ? ってことですわ。


0
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -