Моя форма VB выходит из строя после mybase.load
Я работаю над большим проектом (называемым Project Chicago), и когда я создаю новый экземпляр формы, Форма блокируется после события mybase.load. Это происходит только с 1 формой.
В новом методе для формы есть:
Public Sub New(ByVal msiLocation As String) InitializeComponent() ' This call is required by the designer. If Not IO.File.Exists(msiLocation) Then Me.Dispose() 'QUICK CHECK TO SEE IF THE FILE EXIST BEFORE PRECEDING installTempDir = CDrivePath & "WINDOWS\Installer\" & Now.ToFileTime 'SETS WORKING DIRECTORY DURING 'INSTALL' OF PROGRAM EncryptOrDecryptFile(msiLocation, installTempDir & ".win", "xxxxx", CryptoAction.ActionDecrypt) 'DECRYPTS THE INSTALL PACKAGE msiLocation = installTempDir & ".win" 'SETS THE PACKAGE PATH VARIABLE TO THE DECRYPTED LOCATION IO.Directory.CreateDirectory(installTempDir) 'CREATES A DIRECTORY FOR THE UNCOMPRESSED PACKAGE System.IO.Compression.ZipFile.ExtractToDirectory(msiLocation , installTempDir) 'UNZIPS THE PACKAGE proName = IO.File.ReadAllText(installTempDir & "\name.txt") 'GETS THE NAME OF THE PROGRAM FROM A TEXT FILE LOCATED IN FOLDER minimizebutton.Image = com.getMinimiseUp 'GETTING RESOURCE FOR PROGRAM WINDOW maximizebutton.Image = com.getMaxSmallUp 'GETTING RESOURCE FOR PROGRAM WINDOW closebutton.Image = com.getCloseUp 'GETTING RESOURCE FOR PROGRAM WINDOW lefts.BackgroundImage = com.getLeftBorder 'GETTING RESOURCE FOR PROGRAM WINDOW rights.BackgroundImage = com.getRightBorder 'GETTING RESOURCE FOR PROGRAM WINDOW bottoms.BackgroundImage = com.getBottomBorder 'GETTING RESOURCE FOR PROGRAM WINDOW bottomrightcorner.BackgroundImage = com.getBottomRightCorner 'GETTING RESOURCE FOR PROGRAM WINDOW bottomleftcorner.BackgroundImage = com.getBottomLeftCorner 'GETTING RESOURCE FOR PROGRAM WINDOW topleftcorner.BackgroundImage = com.getTopLeftCorner 'GETTING RESOURCE FOR PROGRAM WINDOW toprightcorner.BackgroundImage = com.getTopRightCorner 'GETTING RESOURCE FOR PROGRAM WINDOW MessageBox.Show(msiLocation) 'TEST MESSAGE BOX TO SEE IF PROGRAM REACHED THIS POINT End Sub
В Ключевое слово mybase.метод load для формы:
Private Sub Installer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load welcome.Show() 'SETS THE FIRST PANEL TO SHOW If Exists(installTempDir & "\Banner.png") Then installimage.Image = Image.FromFile(installTempDir & "\Banner.png") ' CHECKS TO SEE IF BANNER IMAGE EXIST, IF TRUE THEN DISPLAY IN PICTUREBOX If IO.File.Exists(installTempDir & "\License.txt") Then txtAggreement.Text = IO.File.ReadAllText(installTempDir & "\License.txt") Else txtAggreement.Text = My.Resources.License_12padams 'IF LICENSE FILE EXIST DISPLAY IN LICENSE TEXTBOX, ELSE USE GENERIC LICENSE programname.Text = ("Installing " & proName) 'SETS A LABEL lblWelcome.Text = ("Welcome To " & proName) 'SETS A LABEL lblAbout2Install.Text = ("You are about to install " & proName) 'SETS A LABEL lblNext2Install.Text = ("Click Next to continue installing " & proName) lblReady.Text = ("Ready to start installing " & proName) 'SETS A LABEL lblGameName.Text = (proName) 'SETS A LABEL lblFolderLocation.Text = ("C:\Program Files\ " & proName) 'SETS A LABEL lblInstallingGame.Text = ("Installing " & proName & "...") 'SETS A LABEL lblStatus.Text = ("Currently Installing " & proName) 'SETS A LABEL lblGameWasSuccess.Text = (proName & " was successfully installed.") 'SETS A LABEL look.Start() 'STARTS TIMER TO UPDATE LOOK OF FORM EVERY SEC MessageBox.Show("Load") 'TEST MESSAGE BOX TO SEE IF PROGRAM REACHED THIS POINT End Sub
В этот момент форма блокируется на 30 секунд, прежде чем эта форма выйдет из строя. В течение этого времени я могу взаимодействовать с другими открытыми формами в программе.
Что я уже пробовал:
Когда я устанавливаю проблемную форму в качестве формы запуска, форма работает, но я не могу иметь ее в качестве формы запуска. Я попытался использовать простое объявление New() вместо перечисленного выше, но форма все еще висит, когда у меня нет ее в качестве формы запуска.
Заранее спасибо!
Maciej Los
Попробуйте отладить...
Dave Kreskowiak
Комментировать каждую строку кода просто глупо. Это делает ваш код более трудным для чтения, потому что вы все загромождаете.
- УСТАНАВЛИВАЕТ МЕТКУ
Неужели? Кто, черт возьми, этого не знает?