Imports System.IO Imports System.Net Imports System.Threading.Tasks Public Class SYS_UPDATE ReadOnly ds2 As New DataSet Private Sub Set_清單1() FDT_dgv.DataSource = Nothing : ds2.Clear() FDT_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing FDT_dgv.ColumnHeadersHeight = 25 FDT_dgv.AllowUserToAddRows = False SQL_FTP資料夾路徑分配() da.Fill(ds2) : FDT_dgv.DataSource = ds2.Tables(0) : conn.Close() End Sub Private Sub SYS_UPDATE_Load(sender As Object, e As EventArgs) Handles MyBase.Load '-----------------------寫入連線字串----------------------------------------------------------------------------------------------------------------------------------------------- 資料數 = 17 MyModule1.進度條() : 登入人IP = "180.177.181.162,5264" MyModule1.進度條() : SQL_連線字串_ERP() MyModule1.進度條() : 伺服器區域_cb.Text = "180.177.181.162,5264" MyModule1.進度條() : g_conn_type = 伺服器區域_cb.Text & "伺服器" '-----------------------系統版本號寫入----------------------------------------------------------------------------------------------------------------------------------------------- MyModule1.進度條() : SQL_版本號() MyModule1.進度條() : If dr.Read() Then : 版本號 = dr("系統認證版本號") : End If : conn.Close() '-----------------------FTP資料夾登入位置宣告-------------------------------------------------------------------------------------------------------------------------------------- MyModule1.進度條() : SQL_FTP伺服器登入位置() MyModule1.進度條() : If dr.Read() Then : Target = dr("FTP地址") : FTP帳號 = dr("FTP帳號") : FTP密碼 = dr("FTP密碼") : End If : conn.Close() MyModule1.進度條() : Set_清單1() MyModule1.進度條() : Dim HH As String = "" For i As Integer = 0 To FDT_dgv.Rows.Count - 1 If i < 10 Then : HH = "0" & i : ElseIf i >= 10 Then : HH = i : End If If FDT_dgv("指定", i).Value.ToString = "AA" & HH Then : AA(i) = FDT_dgv("資料夾名稱", i).Value.ToString : End If Next MyModule1.進度條() : Target1 = Target & AA(0) & "/" End Sub Private Async Sub SYS_UPDATE_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown MyModule1.進度條() : Delay(30000) MyModule1.進度條() : Dim Str As String = Application.StartupPath MyModule1.進度條() : If File.Exists(Str + "\BIFENG-ERP-SYS.exe") Then : File.Delete(Str + "\BIFENG-ERP-SYS.exe") : End If 'MyModule1.進度條() : My.Computer.Network.DownloadFile(Target & AA(1) & "/" & "BIFENG-ERP-SYS.exe", Str + "\BIFENG-ERP-SYS.exe") Dim downloadUrl As String = Target & AA(1) & "/" & "BIFENG-ERP-SYS.exe" Dim savePath As String = Str + "\BIFENG-ERP-SYS.exe" ' 開始異步下載 Await DownloadFileAsync(downloadUrl, savePath) MyModule1.進度條() : Shell(Str + "\BIFENG-ERP-SYS.exe", vbNormalFocus) Me.Close() End Sub Private WithEvents downloader As New WebClient() Private Async Function DownloadFileAsync(downloadUrl As String, savePath As String) As Task Try ' 使用異步方式下載檔案 Await downloader.DownloadFileTaskAsync(New Uri(downloadUrl), savePath) ' 下載完成後的處理 MessageBox.Show("下載完成!") Catch ex As Exception MessageBox.Show($"下載失敗: {ex.Message}") End Try End Function Public Sub Delay(ByRef Interval As Double) 'Interval单位为毫秒 Dim time As DateTime = DateTime.Now Dim Span As Double = Interval * 1234 While ((DateTime.Now.Ticks - time.Ticks) < Span) Application.DoEvents() End While End Sub End Class