Сценарий - После создания приложения, которое может добавлять и удалять принтеры с пользовательских компьютеров, я сталкиваюсь с ключевой ошибкой:
1) Принтер не будет удален, еслизадания печати существуют в очереди печати (System32 \ spool \ PRINTERS), это файлы SPL и SHD
2) Если есть файл размером 23 000 КБ, мне нужен способ остановить процесс, пока команда незавершено
Мой текущий метод потока
Dim p As Process = New Process()
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
p.StartInfo.FileName = "cmd.exe"
For i = 0 To 2
Select Case i
Case 0
'Stop spooler and dependencies
p.StartInfo.Arguments = "/c net stop spooler /yes"
p.Start()
Case 1
'Delete all queues within folder
p.StartInfo.Arguments = "/c del C:\Windows\System32\spool\PRINTERS\*.* /F /Q"
p.Start()
'Delete printer
printer.Delete()
Case 2
'Restart the spooler service
p.StartInfo.Arguments = "/c net start spooler"
p.Start()
End Select
Next
с потоками :
Dim p As Process = New Process()
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
p.StartInfo.FileName = "cmd.exe"
For i = 0 To 2
Select Case i
Case 0
'Stop spooler and dependencies
p.StartInfo.Arguments = "/c net stop spooler /yes"
p.Start()
'Allow time for the application to purge larger file sizes
Threading.Thread.Sleep(2500)
Case 1
'Delete all queues within folder
p.StartInfo.Arguments = "/c del C:\Windows\System32\spool\PRINTERS\*.* /F /Q"
p.Start()
'Delete printer
printer.Delete()
Case 2
'Restart the spooler service
p.StartInfo.Arguments = "/c net start spooler"
p.Start()
Threading.Thread.Sleep(2500)
End Select
Next
Оба эти метода не будут работатьправильно, приложение не дает достаточно времени для остановки службы спулера.Это означает, что файлы не будут удалены, что приведет к ошибкам при удалении принтера.
Что я надеюсь получить от этой темы :
Мне нужно несколько советов о том, какэффективно управлять этой процедурой.Большое спасибо