You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF打印作业监控报错:System.Printing.PrintJobException参数不正确

打印作业监控WPF项目中Pause()报错的解决方法

问题背景

开发打印作业监控应用,对应的WinForms示例功能正常,但移植到WPF项目后,调用PrintSystemJobInfo.Pause()时抛出错误:

System.Printing.PrintJobException: 设置打印作业时发生异常。Win32错误: 参数不正确。

出错代码片段:

void pqm_OnJobStatusChange(object Sender, PrintJobChangeEventArgs e)
{
    try
    {
        PrintSystemJobInfo job = e.JobInfo;
        
        if (job == null) return;

        if (job.IsSpooling)
        {
            job.Pause(); // 此处报错
        }
        else if (job.IsPaused)
        {
            PrintQueue pq = job.HostingPrintQueue;
            pq.Refresh();

            if (JobDetails(printer, e.JobID))
            {
                job.Resume();
            }
            else
            {
                job.Cancel();
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

解决办法

1. 重新获取打印作业对象

WPF中事件参数传递的e.JobInfo可能因对象状态过期或上下文问题导致操作失败,改为从打印队列重新获取作业实例:

void pqm_OnJobStatusChange(object Sender, PrintJobChangeEventArgs e)
{
    try
    {
        PrintQueue pq = Sender as PrintQueue;
        if(pq == null) return;
        
        // 从队列重新获取作业,确保状态最新
        PrintSystemJobInfo job = pq.GetJob(e.JobID);
        
        if (job == null) return;

        if (job.IsSpooling)
        {
            job.Pause();
        }
        else if (job.IsPaused)
        {
            pq.Refresh();

            if (JobDetails(printer, e.JobID))
            {
                job.Resume();
            }
            else
            {
                job.Cancel();
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

2. 检查权限

确保应用拥有操作打印作业的足够权限,可尝试以管理员身份运行WPF应用测试。

3. 强制刷新打印队列

在获取作业前调用PrintQueue.Refresh(),保证队列和作业状态是最新的:

pq.Refresh();
PrintSystemJobInfo job = pq.GetJob(e.JobID);

内容的提问来源于stack exchange,提问作者SoftSol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:02:14