我有一個帶有一堆列印機的串列框,通過選擇一臺列印機并按下安裝按鈕,列印機就安裝好了。該程序需要 30-45 秒,其中應用程式凍結但它正在后臺安裝。無論如何要放置一個進度條來顯示正在發生的事情而不是凍結。這是列印機安裝代碼的一部分。不需要進度條,但任何型別的活動都可以在驅動程式安裝時顯示正在發生的事情
Dim objNetwork = CreateObject("WScript.Network")
MsgBox("Printer Driver is Installing, Please wait",, "Installing")
objNetwork.AddWindowsPrinterConnection("\\printserver\" CheckedListBox1.SelectedItem)
objNetwork.SetDefaultPrinter(CheckedListBox1.SelectedItem)
objNetwork = Nothing
提前謝謝
uj5u.com熱心網友回復:
您真的可以選擇任何方式告訴用戶在執行后臺任務時等待。這是一個帶有 ToolStripStatusLabel 和 Cursor 更新的選項。它使用 Async/Await 創建任務來不凍結您的 ui。
Option Strict On
Imports IWshRuntimeLibrary
' ---
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Me.Cursor = Cursors.WaitCursor
Me.ToolStripStatusLabel1.Text = "Printer Driver is Installing, Please wait"
Dim name = CheckedListBox1.SelectedItem.ToString()
Await addPrinterAsync(name)
Finally
Me.Cursor = Cursors.Default
Me.ToolStripStatusLabel1.Text = "Ready"
End Try
End Sub
Private Function addPrinterAsync(name As String) As Task
Return Task.Run(
Sub()
Dim objNetwork As New WshNetwork() '= CreateObject("WScript.Network")
objNetwork.AddWindowsPrinterConnection($"\\printserver\{name}")
objNetwork.SetDefaultPrinter(name)
End Sub)
End Function
我還添加了一個 COM 參考Windows Script Host Object Model,允許您放置Option Strict On和創建具有強型別的列印機。但這是可選的,但你可以隨時不用。
我只是不認為 MsgBox 會起作用,因為即使您設法讓它顯示非模態而不凍結用戶界面,用戶也可以隨時關閉它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/362715.html
標籤:网络
上一篇:為什么通過參考傳遞陣列元素會顯式導致IL中的賦值操作?
下一篇:無法弄清楚基于類制作陣列
