我有一個項目在沒有傳遞適當的命令行參數時顯示一個UI。這是一個用於動態更新桌面牆紙的簡單實用程序。當它完成更新時,我致電在Application.Run完成之前處理.NET應用程序
this.Dispose();
但是,如果傳遞命令行參數,則會導致問題。實際上,表單在用戶顯示Dispose方法之前最終會調用。結果是一個令人討厭的錯誤,表示程序無法正常運行,即使它按照我的意願做了。
我可以尊重的是,我不是非常合乎邏輯,但我不知道解決方案的另一種方法。有另一種方法可以在應用程序加載之前乾淨地調用Dispose()方法而不會導致錯誤?
附加信息:以上
是evidentially不明確,我爲此道歉。我的計劃是從Program.cs的文件開始:
Application.Run(new MainForm());
在構造函數中我檢查命令行參數存在,如果是這樣調用一個叫SilentRun程序。這個私有方法檢查參數是否有效,如果是,則將它們傳遞給提交名爲BrandSystem()的操作的方法。
BrandSystem後()完成後,其工作,最後一條語句是
this.Dispose();
因爲有沒有別的實際做應用。如果沒有傳遞命令參數並且用戶使用GUI來應用更改,則會調用相同的方法。本質上,一旦更新壁紙的過程完成,我希望應用程序自行終止。
命令行參數的原因是這種排序實用程序可以添加到安裝包並在後臺以靜默方式運行。我的安裝過程不具備更新壁紙的本地功能,這對我來說是一個雙鳥一體的工具。
當程序在命令行模式下運行並在實際加載所有內容之前調用Dispose時,會出現此問題。即使他們證明我的邏輯完全不健全,我仍然樂於接受建議。
非常不清楚,你的代碼片段沒用。無論如何,當你的程序終止時,爲什麼要放棄任何東西? – 2010-08-14 19:53:49
@Hans Passant - 請參閱更新以獲得澄清。謝謝你指出我太模糊了。 – Jeff 2010-08-14 21:56:43
您剛剛添加了* any *程序中存在的代碼片段。 – 2010-08-14 23:05:44