报错处代码:
public static bool GetPrinterStatus(string PrinterName, ref string strRet)
{
//获取状态字符串,并用?作为分割符
ManagementClass managementClass = new ManagementClass("Win32_Printer");
ManagementObjectCollection managementObjectCollection = managementClass.GetInstances();
foreach (ManagementObject managementObject in managementObjectCollection)
{
if (managementObject["Name"].ToString() == PrinterName)
{
string status = managementObject["PrinterStatus"].ToString();
if (status == "3")
return true;
else if(status == "2")
{
strRet = "打印机不可用";
return false;
}
else if (status == "7")
{
strRet = "打印机脱机,请重新连接";
return false;
}
else
{
return true;
}
}
}
strRet = "没有发现打印机";
return false;
}
报错内容:
未处理 System.Management.ManagementException
HResult=-2146233087
Message=常规故障
Source=System.Management
StackTrace:
在 System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
在 System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
在 DICOMPrintServer.PrinterController.GetPrinterStatus(String PrinterName, String& strRet)
在 DICOMPrintServer.MainWindow.listenTaskListThreadBegin(Object pp)
在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
在 System.Threading.ThreadHelper.ThreadStart(Object obj)
InnerException:
解决办法:
报上述错误一般是电脑打印服务已关闭;
重新开启即可
当电脑显示打印服务已关闭时,你可以按照以下步骤来解决问题:
1.检查打印机连接:确保打印机正确连接到电脑,并且电源已打开。检查USB线或网络连接是否松动或断开,如果是,请重新插入或连接。
2.重启打印机与电脑:有时简单的重启可以解决问题。先关闭打印机,然后关闭电脑。等待几分钟后再打开电脑和打印机。检查是否有任何错误消息或指示。
3.检查打印服务状态:按下Win+R键,打开运行对话框,输入“services.msc”,然后按回车键。在服务管理器中,找到“打印机排队服务”(Print Spooler)并确保其状态为“运行中”(Running)。如果状态是“停止”(Stopped),右键点击该服务,选择“启动”(Start)来重新启动服务。
4.清理打印队列:找到服务管理器中的“打印机排队服务”(Print Spooler),右键点击并选择“停止”(Stop)。然后,转到计算机的C:\Windows\System32\spool\PRINTERS目录下,删除所有文件。最后,再次右键点击“打印机排队服务”并选择“启动”(Start)。
需要注意的是,解决方法可能因操作系统和设备配置而有所不同。在尝试任何操作之前,最好备份重要文件,以防万一发生意外情况。