监控程序打印

时间:2010-11-28 13:38:53

标签: c# printing

下午好。我有source program监视打印机的状态(开始打印,停止等)。以下是显示有关打印信息的代码:

        MethodInvoker invoker = () =>
        {
            lbSpoolChanges.Items.Add(e.JobID + " - " + e.JobName + " - " + e.JobStatus);
        };
        if (lbSpoolChanges.InvokeRequired)
        {
            Invoke(invoker);
        }
        else
        {
            invoker();
        }`

您也可以调用属性e.JobInfo.NumberOfPagesPrinted并且行将是

lbSpoolChanges.Items.Add(e.JobID + " - " + e.JobName + " - " + e.JobStatus + " - " + e.JobInfo.NumberOfPagesPrinted);

但是在调试错误中弹出“调用线程无法访问此对象,因为此对象的所有者是另一个线程..”告诉我您要在哪里调用此属性。来源包括。并且有人可以告诉如何这样做自动控制所有打印机(例如4),而不是在程序中设置。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果你将调用者写成这样的Action,并使用BeginInvoke传递委托参数,它是否有效?

Action<string> invoker = (x) =>
{
    lbSpoolChanges.Items.Add(x);
};
if (this.InvokeRequired)
{
    this.BeginInvoke(invoker, e.JobID + " - " + e.JobName + " - " + e.JobStatus);
}
else
{
    invoker(e.JobID + " - " + e.JobName + " - " + e.JobStatus);
}