2014-02-23 59 views
0

我在Visual Studio Visual Basic 2012中有一個要求,以便爲用戶從模塊映射打印機。聲明函數AddPrinterConnection要運行多次

我不能找到一種方法,使用.NET 3.5直接,所以我一直在使用的模塊下面這樣做:

Declare Function AddPrinterConnection Lib "winspool.drv" Alias "AddPrinterConnectionA" (ByVal pName As String) As Integer 

然後我用一個爲每個測試別的東西,如果這是真的我使用以下內容添加打印機:

AddPrinterConnection("\\printserver\" & X(1)) 

現在可以使用,但映射10臺打印機的速度非常慢。

我想知道:

  1. 有一種方法給函數多次調用這樣的功能會跑很多次使工作相當快?

  2. 或者有更好的方法來映射我使用的VB.net網絡打印機。

+0

我發現如果我這樣做,它會很快運行並在其自己的線程中運行每個映射; –

+0

我以爲我會嘗試使用以下線程; ' 類MainClass 公共共享的Sub Main(打印機) 昏暗PadThread作爲新Threading.Thread( AddressOf Work.AddNetPrint) PadThread.Start(打印機) 結束子 末級 公共類工作 共享子AddNetPrint (打印機) AddPrinterConnection(打印機) End Sub End Class ' 但它似乎沒有一次映射打印機。任何幫助都會很棒。 –

回答

0

我最終做的事情如下:

  1. 對於多線程我使用的類

    Class MainClass Public Shared Sub Main(Printer) Dim PadThread As New Threading.Thread( AddressOf Work.AddNetPrint) PadThread.IsBackground = True PadThread.Start(Printer) End Sub End Class Public Class Work Shared Sub AddNetPrint(Printer) Dim PP As New Printing.LocalPrintServer If Repair = True Then Repair = False Try PP.DisconnectFromPrintQueue(Printer) Catch End Try Try PP.ConnectToPrintQueue(Printer) Catch End Try Else Try PP.ConnectToPrintQueue(Printer) Catch End Try End If PP.Dispose() PP = Nothing End Sub End Class

  2. 用於映射的隊列我使用System.Printing.LocalPrintServer

    Dim PP As New Printing.LocalPrintServer PP.ConnectToPrintQueue(Printer)

即所有工作很好,很快太。

希望這可以幫助別人。