1

私はWinForm2つの異なるフォームを持つアプリケーションを持っています。最初のコマンド ライン引数が"download"の場合、Downloadフォームが表示されます。プログラムのメソッドでObjectDisposedExceptionオンラインApplication.Run(new Download(args));になります。Main

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        if (args.Length > 0)
            switch (args[0])
            {
                case "download":
                    if (args.Length == 4)
                        Application.Run(new Download(args));
                    break;
                default:
                    Application.Run(new ApsisRunner(args));
                    break;
            }
    }
}

ここに画像の説明を入力

更新: 例外スタック トレース

   at System.Windows.Forms.Control.CreateHandle()
   at System.Windows.Forms.Form.CreateHandle()
   at System.Windows.Forms.Control.get_Handle()
   at System.Windows.Forms.Control.SetVisibleCore(Boolean value)
   at System.Windows.Forms.Form.SetVisibleCore(Boolean value)
   at System.Windows.Forms.Control.set_Visible(Boolean value)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run(Form mainForm)
   at ApsisCampaignRunner.Program.Main(String[] args) in c:\Users\pedram.mobedi\Documents\GitHub\Postbag\ApsisCampaignRunner\Program.cs:line 31
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
4

2 に答える 2

4

ダウンロードフォームのコンストラクターでこのようなことをしていますか?

ここに画像の説明を入力

Download Form のコードに問題がある可能性があります。コンストラクターで Form を閉じたり破棄したりしないでください。

于 2014-12-08T09:15:43.177 に答える
1

投稿したコードは問題ありませんが、オブジェクトによって破棄された例外が Download クラス内のどこかで発生した場合、それが表示される場所 (メイン メソッド) までコール スタックにスローされます。

原因は、フォームを破棄した後にフォームを表示できるように設定しようとしたことです。

ObjectDisposed Exceptions で中断して、それがスローされた正確な行を見つけることができます。これは、Debug -> Exceptions で実行できます。

于 2014-12-08T09:12:38.443 に答える