C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
掲示板トップ
C# と VB.NET のサンプル
新規作成
利用方法/規約
ツリー表示
トピック表示
ランキング
記事検索
過去ログ
■103935
/ 6階層)
FormClosingでセーブするが稀に最後まで書込まれない
□投稿者/ 魔界の仮面弁士
(3912回)-(2026/05/14(Thu) 11:41:03)
■
No103934
(Azulean さん) に返信
> ・FormClosing はキャンセル確認をするためのタイミングであり、終了は確定していない。
> →たとえば、Windowsシャットダウンの場合、FormClosingの後、他のアプリでシャットダウンをキャンセルしたら、「閉じません」(FormClosedが発生しない)。
UserClosing 等が契機なら、いったんキャンセルしておいて保存完了後に再終了する手もありますが、
TaskManagerClosing や WindowsShutDown などを考えると、望ましくは無いでしょうね。
>>アプリケーションでは、データと状態を頻繁に保存することをお勧めします。たとえば、ユーザーが開始した保存操作の間にデータを自動的に保存して、シャットダウン時に保存するデータの量を減らします。
新規ファイルではなく上書き保存が必要な場合、アイドル時には別ファイルに残しておいて、
終了時にそれを File.Replace で入れ替えるパターンもありますね。
既に作成しておいたファイルとの置換だけなら短い時間で終わるので。
(File.Replace での置換は atomic に行われるため、破損の危険性が抑えられる)
■
No103933
(Tom さん) に返信
> フォームクローズ(×ボタン押下)でメイン画面をハイドして見た目はすぐに終わったようなふりをしているのが不味いのかなぁ
Stream はいつ開いて、いつ閉じていますか?
頻繁に開いたり閉じたりを繰り返しているのか、
それともアプリが起動している間、共有あるいは排他で開き続けているのか。
FormClosing 以外の箇所では一切操作されないファイルなのでしょうか?
それとも、Form 内の他の箇所でも使われているファイルでしょうか?
頻繁に開いたり閉じたりを繰り返しているのであれば、編集モードでファイルを開き続けておき、
「50万件出力」と「数十行出力」部が、同一の Stream インスタンスに対して
処理されるようにすれば、50万部だけが欠損するようなことを防げる気がします。
同一スレッドからの出力であるならば。
編集キー/
編集
前の記事
(元になった記事)
次の記事
(この記事の返信)
←Re[5]: FormClosingでセーブするが稀に最後まで書込まれない
/Azulean
→Re[7]: FormClosingでセーブするが稀に最後まで書込まれない
/Tom
上記関連ツリー
FormClosingでセーブするが稀に最後まで書込まれない
/ Tom
(26/05/05(Tue) 11:26)
#103927
└
Re[1]: FormClosingでセーブするが稀に最後まで書込まれない
/ 魔界の仮面弁士
(26/05/05(Tue) 17:57)
#103929
└
Re[2]: FormClosingでセーブするが稀に最後まで書込まれない
/ 魔界の仮面弁士
(26/05/05(Tue) 18:53)
#103930
└
Re[3]: FormClosingでセーブするが稀に最後まで書込まれない
/ Tom
(26/05/06(Wed) 13:09)
#103931
└
Re[4]: FormClosingでセーブするが稀に最後まで書込まれない
/ Tom
(26/05/13(Wed) 20:50)
#103933
└
Re[5]: FormClosingでセーブするが稀に最後まで書込まれない
/ Azulean
(26/05/13(Wed) 22:06)
#103934
└
FormClosingでセーブするが稀に最後まで書込まれない
/ 魔界の仮面弁士
(26/05/14(Thu) 11:41)
#103935
←Now
└
Re[7]: FormClosingでセーブするが稀に最後まで書込まれない
/ Tom
(26/05/16(Sat) 12:54)
#103936
上記ツリーを一括表示
/
上記ツリーをトピック表示
上記の記事へ返信
入力内容にタグは利用できません。
他人を中傷する記事は管理者の判断で予告無く削除されます。
半角カナは使用しないでください。文字化けの原因になります。
名前、コメントは必須記入項目です。記入漏れはエラーになります。
入力内容の一部は、次回投稿時の手間を省くためブラウザに記録されます。
URL は自動的にリンクされます。
記事中に No*** のように書くとその記事にリンクされます(No は半角英字/*** は半角数字)。
名前
(*必須)
E-Mail (任意)
Web サイト (任意)
投稿モード
通常モード
図表モード (ソースコードを貼る場合はこちらを使用)
本文
(質問の場合は、開発環境・使用言語のバージョンなどを最初に書いてください)
■No103935 (魔界の仮面弁士 さん) に返信 > ■No103934 (Azulean さん) に返信 >>・FormClosing はキャンセル確認をするためのタイミングであり、終了は確定していない。 >> →たとえば、Windowsシャットダウンの場合、FormClosingの後、他のアプリでシャットダウンをキャンセルしたら、「閉じません」(FormClosedが発生しない)。 > UserClosing 等が契機なら、いったんキャンセルしておいて保存完了後に再終了する手もありますが、 > TaskManagerClosing や WindowsShutDown などを考えると、望ましくは無いでしょうね。 > > > >>アプリケーションでは、データと状態を頻繁に保存することをお勧めします。たとえば、ユーザーが開始した保存操作の間にデータを自動的に保存して、シャットダウン時に保存するデータの量を減らします。 > 新規ファイルではなく上書き保存が必要な場合、アイドル時には別ファイルに残しておいて、 > 終了時にそれを File.Replace で入れ替えるパターンもありますね。 > 既に作成しておいたファイルとの置換だけなら短い時間で終わるので。 > (File.Replace での置換は atomic に行われるため、破損の危険性が抑えられる) > > > ■No103933 (Tom さん) に返信 >>フォームクローズ(×ボタン押下)でメイン画面をハイドして見た目はすぐに終わったようなふりをしているのが不味いのかなぁ > Stream はいつ開いて、いつ閉じていますか? > 頻繁に開いたり閉じたりを繰り返しているのか、 > それともアプリが起動している間、共有あるいは排他で開き続けているのか。 > > FormClosing 以外の箇所では一切操作されないファイルなのでしょうか? > それとも、Form 内の他の箇所でも使われているファイルでしょうか? > > 頻繁に開いたり閉じたりを繰り返しているのであれば、編集モードでファイルを開き続けておき、 > 「50万件出力」と「数十行出力」部が、同一の Stream インスタンスに対して > 処理されるようにすれば、50万部だけが欠損するようなことを防げる気がします。 > 同一スレッドからの出力であるならば。
編集キー
自分の投稿を編集する時に必要です
(半角8文字以内)
解決済み
/
解決したらチェックしておきましょう。
プレビュー/
管理者用
-
Child Tree
-