簡體   English   中英

VB.Net中的主要功能在哪里

[英]Where is the main function in VB.Net

我接管了VB.Net WinForms應用程序的支持。 我實際上是ac#developer並且更熟悉c#項目中visual studio項目的設置。 現在我試圖確定為什么我的應用程序崩潰在特定的XP安裝上,我在這里閱讀了這個建議

http://social.msdn.microsoft.com/forums/en-US/winformssetup/thread/53c2de93-ab33-41d0-b5dd-7ca5fbfa5c24/

在main函數中添加try catch塊。 這是在第5個帖子的底部建議的。 (我將在下面引用它)但是,如果我查看VB.Net visual studio項目,我找不到Main()過程。 我找到的是一個名為“我的項目”的灰色文件夾,里面有一個“Application.myapp”文件。 此文件具有關聯的設計器文件,但如果單擊它,我會看到以下xml:

<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <MySubMain>true</MySubMain>
  <MainForm>MDIMain</MainForm>
  <SingleInstance>false</SingleInstance>
  <ShutdownMode>0</ShutdownMode>
  <EnableVisualStyles>true</EnableVisualStyles>
  <AuthenticationMode>0</AuthenticationMode>
  <SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

所以任何人都可以啟發我到這個VB.Net項目的實際主程序調用的位置,以便我可以嘗試捕獲正在發生的異常。 如果,正如我懷疑的那樣,我的VB.Net項目中實際上沒有主程序,有人可能會讓我知道如何在我的項目中執行以下操作:

[STAThread]
static void Main()
{
    try
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
    catch (System.IO.FileNotFoundException ex)
    {
        MessageBox.Show(ex.Message + "    \n\n\n" + ex.StackTrace);
    }
}

VB有一個稱為“應用程序框架”的特殊模式(可以在主選項下找到)。

如果啟用此模式,編譯器將自動生成Main方法並在其周圍出現一些漏洞。 您可以禁用此選項; 但是,這可能會導致項目出現問題,因為項目實際上可能會使用應用程序框架功能。

或者,您可以使用相同的應用程序框架為未捕獲的異常( UnhandledExceptions )注冊事件處理程序。

VB方法更多的方法是打開Application屬性並單擊ViewApplicationEvents按鈕。 這將打開Application.xaml.vb文件,您可以在其中為應用程序添加自定義事件處理程序。 從左側下拉列表中選擇應用程序事件,您可以輕松訪問一系列事件,包括DispatcherUnhandledException,Activated,Navigating,Startup,Exit等。您還可以通過從左側下拉列表中選擇Applciation並選擇此方法來添加Main方法主要從右下拉。

對於WindowsForms應用程序,該過程類似。 但是,當您選擇Applciation Events按鈕時,顯示的文件是ApplicationEvents.vb文件。 在此處,要添加全局錯誤處理程序,請選擇左下拉列表並選擇MyApplication Events。 然后在右側下拉列表中添加UnhandledException處理程序。 您也可以在此處創建Main方法。

我今天來到這個頁面尋找答案,我在這里和代碼項目中找到了一些好的。

當我滿意自己知道該怎么做時,我手邊還有一個簡化的方法,讓項目屬性幾乎不受影響。 (您必須關閉Application Framework,否則VB運行時將不會運行您的 Main例程!)簡而言之,如果您在定義啟動表單的類模塊中定義Main例程,Visual Basic運行時引擎將找到並且執行它。

如上所述,您的例程必須定義為共享。 您可以在如何在VB.NET中運行特定表單中查看我的示例以及其他一些注釋

警告

禁用應用程序框架時,將丟失“單實例”復選框。 我剛剛完成了對引用示例的更新,以包含我開發和測試的代碼以強制執行單個實例。

它是由編譯器在找不到時自動生成的,但您可以自己創建一個。

http://msdn.microsoft.com/en-us/library/ms235406%28v=VS.100%29.aspx

http://msdn.microsoft.com/en-us/library/y4bwckbb.aspx

您可以在任何地方創建該方法,只要它是Shared 要連接它,您必須進入項目設置並將入口點設置為您的Main方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM