none
「ハンドルされない例外のため、プロセスが中止されました。」の原因は... RRS feed

  • 質問

  • Windows Server2012 R2にて

    VS Express 2012  for windows desktop でアプリケーションを開発しています。(VB)

    24時間稼働させているアプリですが、2週間に1回ほど以下例外が発生してアプリがダウンします。

    ビットマップ描画でエラーが発生していると推測していますが、

    ビットマップはタイトルバーに自作アイコンを使用する程度しかありません。

    やはり自作アイコンが原因なのでしょうか?

    フレームワークのバージョン:v4.0.30319
    説明: ハンドルされない例外のため、プロセスが中止されました。
    例外情報:System.ArgumentException
    スタック:
       場所 System.Drawing.Bitmap..ctor(Int32, Int32, System.Drawing.Imaging.PixelFormat)
       場所 System.Drawing.Bitmap..ctor(Int32, Int32)
       場所 System.Drawing.Icon.ToBitmap()
       場所 System.Windows.Forms.ThreadExceptionDialog..ctor(System.Exception)
       場所 System.Windows.Forms.Application+ThreadContext.OnThreadException(System.Exception)
       場所 System.Windows.Forms.Control.WndProcException(System.Exception)
       場所 System.Windows.Forms.Control+ControlNativeWindow.OnThreadException(System.Exception)
       場所 System.Windows.Forms.NativeWindow.Callback(IntPtr, Int32, IntPtr, IntPtr)
       場所 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG ByRef)
       場所 System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr, Int32, Int32)
       場所 System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner(Int32, System.Windows.Forms.ApplicationContext)
       場所 System.Windows.Forms.Application+ThreadContext.RunMessageLoop(Int32, System.Windows.Forms.ApplicationContext)
       場所 System.Windows.Forms.Application.Run(System.Windows.Forms.ApplicationContext)
       場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(System.String[])
       場所 DBControl_System.My.MyApplication.Main(System.String[])

    • 移動 佐伯玲 2016年2月2日 1:28 Windows Server 2012 から Visual Basic へ
    2016年2月1日 11:36

回答

  • 呼び出し履歴をよく見て欲しいのですが、ThreadExceptionDialog のコンストラクタが呼び出されています。
    これは、ほかの例外が発生していて、.NET 標準の例外ダイアログを表示しようとしてさらに例外が発生してしまっている という具合です。

    Icon.ToBitmap すらできないのですから、おそらくリークでしょう。
    GDI リソースのリークか、メモリのリークかどちらかは起きているでしょうから、ある程度の時間実行してみて、リソースの消費具合を観察するところから始めてはいかがでしょうか。


    // TechNet ネタじゃなくて、MSDN ネタなので、そのうち、オペレーターが移動してくれると思います。
    2016年2月1日 12:51
    モデレータ

すべての返信

  • 呼び出し履歴をよく見て欲しいのですが、ThreadExceptionDialog のコンストラクタが呼び出されています。
    これは、ほかの例外が発生していて、.NET 標準の例外ダイアログを表示しようとしてさらに例外が発生してしまっている という具合です。

    Icon.ToBitmap すらできないのですから、おそらくリークでしょう。
    GDI リソースのリークか、メモリのリークかどちらかは起きているでしょうから、ある程度の時間実行してみて、リソースの消費具合を観察するところから始めてはいかがでしょうか。


    // TechNet ネタじゃなくて、MSDN ネタなので、そのうち、オペレーターが移動してくれると思います。
    2016年2月1日 12:51
    モデレータ
  • こんにちは、skap373 さん
    フォーラムオペレータの佐伯 玲 です。

    Visual Basaicで開発したアプリケーションでのご質問ですのでスレッドをMSDNの「Visual Basic」フォーラムへ移動させていただきますね。
    Azuleanさんからのアドバイスの内容もご覧いただきご確認出来ましたらご返信くださいませ。

    宜しくお願い致します。

    TechNet Community Support 佐伯 玲

    2016年2月2日 1:28