- - PR -
高負荷時のテキストファイル書き込みで例外が発生する
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-31 22:09
ほんとにここ?ほんとにNULL参照? うーん、ふしぎ、、、 #pdbが最新になってないってオチじゃないよね? | ||||||||
|
投稿日時: 2006-01-31 23:16
初めまして、マー帽と申します。
usingを使用してみては如何でしょうか? 私はまだ使用した事がありませんが、 ステートメントの終了時に Dispose メソッドを呼び出してくれるようです。 | ||||||||
|
投稿日時: 2006-01-31 23:24
デバッグ情報が最新でも不安定な状態だと、正しい位置で中断しないことがあります。 そんなわけで、とりあえず、スタック トレースが欲しくなって参りました。(^-^;) # 確かにここでは起きえない。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-31 23:25
今回のとは関係がないと思われます。 例外が起きた後の話ではないですので。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-31 23:34
最近C#を始めたばかりで、じゃんぬねっとさんの投稿は いつも参考にさせていただいております。 確かにusingがどうかという問題ではありませんが、 高負荷の時に発生するのであればガベージコレクションの動作が関係しているのではと考えて、 明示的にDisposeすれば解決するのではないかと思っています。 | ||||||||
|
投稿日時: 2006-02-01 00:10
説明不足ですので補足いたします。 勉強したての素人考えですが、 例外が発生した時の問題ではなく、問題が発生するまでの4000回のインスタンスの作成時に 高負荷のためにリソースを開放できず、不具合が発生しているのではないかと考えています。 明示的にDisposeし、確実にリソースを開放すれば良いのではないでしょうか? [ メッセージ編集済み 編集者: マー帽 編集日時 2006-02-01 00:13 ] | ||||||||
|
投稿日時: 2006-02-01 01:24
今回、解放漏れはあまり考えられません。 Mutex は確かに IDisposable を実装していますが、Dispose は protected メソッドです。 非公開であるため、Close メソッドと等価 (または十分) であることを示します。
finally 句で Close なされているため、"確実" は確実でしょう。 まあ、using ステートメントを使うべきという点では同意です。 それにしても、4000 件も処理するとわかっていながら、毎回 Mutex を生成するんですかね... 最初と最後だけで良いような気がしますし、Mutex の使いどころではないです。 どちらにしても、コメントアウトするなりして検証しない限りは前には進めません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-02-01 07:43
開放漏れではなく、高負荷でガベージコレクションの処理が遅れる事によって 開放が遅延しているのではないかという予想です。 Close メソッド後のリソース開放はガベージコレクションが行いますが、 それは Close 後ただちに行われるのではなく、多少なりとも遅延する可能性がありますよね? 連続して処理するのであれば、遅延するかも知れない開放より 確実に開放してから処理を継続する方が良いように思います。 [ メッセージ編集済み 編集者: マー帽 編集日時 2006-02-01 08:04 ] |