C# 未处理 System.Management.ManagementException HResult=-2146233087 Message=常规故障 Source=System.M

报错处代码:

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)。
需要注意的是,解决方法可能因操作系统和设备配置而有所不同。在尝试任何操作之前,最好备份重要文件,以防万一发生意外情况。

C# 未处理 System.Management.ManagementException HResult=-2146233087 Message=常规故障 Source=System.M_第1张图片

电脑打印服务已关闭怎么解决?

 

你可能感兴趣的:(C#,c#)