![](/img/trans.png)
[英]NullReferenceException at Application.Run(new Main())
[英]finally block not executing after Application.Run(new main_form)
我想在程序退出之前執行一些代碼,因此我認為對VS創建的Program.cs進行編輯應如下所示:
...
try
{
Application.Run(new main_form);
}
finally
{
special_shutdown_code();
}
...
可以解決問題,但是當我單擊主窗體右上角的[x]時,我的special_shutdown_code()
並未執行。 我返回並添加了打印語句:
...
try
{
System.Console.WriteLine("Before");
Application.Run(new main_form);
System.Console.WriteLine("After");
}
finally
{
System.Console.WriteLine("finally");
special_shutdown_code();
}
System.Console.WriteLine("post-finally");
...
“之前”是唯一打印的輸出。
從我看過的Application.Run函數應該返回。 我不知所措。 任何解釋將不勝感激。
這是C ++ / CLR + C#+ C混合程序,但是主要部分是C#。
我希望對未發生的事情進行解釋,而不是對如何實現相同功能的建議。 在大多數情況下,我都可以解決此問題,但是看起來最干凈,最容易理解的正確方法以及完全不起作用的正確方法使我感到困惑。
您可以嘗試:
Form mainForm = new MainForm();
mainForm.Closing += delegate(...)
{
};
Application.Run(mainForm);
不知道這是否真的有效...
當我在沒有主要形式的線程上運行消息泵時遇到了答案。
有3個版本的Application.Run()
。 我發現關於使用不帶參數的版本的信息很少。 我看到最多的是Application.Run(Form)
,我相信最終可能在進行一些設置后調用Application.Run(new ApplicationContext(Form))
。 設置`ApplicationContext.MainForm
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.