C#でWebBrowserを使ってスクレイピングをしているアプリを制作しています。
そのアプリは、プログラムの中で、webBrowserを何回もnewしていえると起こります。
これは、webBrowserを使用しているとどうしようもないものなのでしょうか?
try~catchのエラーにも引っかからないので、これが発生した時に、すみやかにエラー処理ができるだけでもありがたいのですが。。。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
こんにちは。
少し調べてみましたが、「次の行でメモリ不足になりました。」のメッセージはWebBrowserの中で発生しているブラウザ側のエラーのようですね。となると、プログラム側のメモリの管理の問題ではなく、WebBrowser自体が扱えるメモリが不足している可能性があります。これを解決する方法は……ちょっと分かりません。
これは、webBrowserを使用しているとどうしようもないものなのでしょうか?
そういうことになると思います。
WebBrowserというのは本来、「ユーザーが操作するための」ブラウザウィンドウの埋め込みコンポーネントです。なので、それを複数回newするという事はありえない、「本来の使用用途ではない」ということになります。
目的が「スクレイピング」ということなので、それこそWebBrowserの使用は不適切です。C#にはHttpClient
という完成されたWebインターフェースが存在するので、そちらの利用を検討してください。もし「どうしてもWebBrowserを使い続けなければならない」理由があるのならば、逆に「その理由を回避する」ように解決策を模索するべきでしょう。
投稿2016/09/26 06:37
総合スコア4103
0
そのアプリは、プログラムの中で、webBrowserを何回もnewしていえると起こります。
そういうことをすれば当たり前という気がします。
MSDN ライブラリを読みましたか? 以下のように書いてあるはずです。
"WebBrowser は、リソースへの負荷の大きいコントロールです。コントロールの使用を終えたら、必ず Dispose() メソッドを呼び出し、すべてのリソースを確実に解放するようにしてください"
どうしても「webBrowserを何回もnew」する必要があるのかをよく考えて、そういうことをしないで済むように実装を考え直す余地はないのですか?
投稿2016/09/26 06:13
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/09/26 10:04
2016/09/26 11:33
退会済みユーザー
2016/09/26 12:34
2016/09/26 12:40
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/26 07:01
2016/09/26 07:25
2016/09/26 07:57
2016/09/26 08:13
2016/09/26 08:47
2016/09/26 12:18
2016/09/26 12:19