2013-02-14 24 views
1

我跑了一些非常基本的打印码:(使用.NET 4.0,VS 2012,Windows 8中)System.Drawing.Printing:RPC服务器不可用

var bitmap = new Bitmap(control.Width, control.Height); 

control.DrawToBitmap(bitmap, new Rectangle(0, 0, control.Width, control.Height)); 

var pd = new PrintDocument(); 

pd.PrintPage += (s, e) => e.Graphics.DrawImage(bitmap, 100, 100); 
pd.Print(); 

而且它抛出一个错误:

System.ComponentModel.Win32Exception was unhandled 
HResult=-2147467259 
Message=The RPC server is unavailable 
    Source=System.Drawing 
    ErrorCode=-2147467259 
    NativeErrorCode=1722 
    StackTrace: 
    at System.Drawing.Printing.StandardPrintController.OnStartPrint(PrintDocument document, PrintEventArgs e) 
    at System.Windows.Forms.PrintControllerWithStatusDialog.OnStartPrint(PrintDocument document, PrintEventArgs e) 
    at System.Drawing.Printing.PrintController.Print(PrintDocument document) 
    at System.Drawing.Printing.PrintDocument.Print() 
    at FrogJump.Form1.PrintControl(Control control) in e:\Univ\S13\AI\FrogJump\FrogJump\Form1.cs:line 120 
    at FrogJump.Form1.btnPrint_Click(Object sender, EventArgs e) in e:\Univ\S13\AI\FrogJump\FrogJump\Form1.cs:line 108 
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ButtonBase.WndProc(Message& m) 
    at System.Windows.Forms.Button.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
    at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 
    at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) 
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 
    at FrogJump.Program.Main() in e:\Univ\S13\AI\FrogJump\FrogJump\Program.cs:line 18 
    at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 
InnerException: 
+0

System.Drawing.Printing和Windows打印API都不使用RPC。您需要先查看打印机驱动程序。 – 2013-02-14 12:19:20

回答

4

这实在是一个长镜头 - 但我认为你应该检查,如果你要打印到打印机你以为你是打印到..;)

(检查是否打印正确打印机并打开)

+0

其实你的评论帮助!突然,错误消失了!当时“默认打印机”未连接到我的电脑....仍然不明白错误发生的原因,但现在,至少该问题消失了。 :) 谢谢!! – 2013-02-16 21:20:38

+0

说实话,这不是'真的'一炮打响.. :)你试图打印,只有RPC在这种情况下是你的打印机驱动程序试图发送命令到你的服务器(打印机),这可能是无法使用的。“消息= RPC服务器不可用“ – 2013-02-17 02:43:13

+0

对我而言,重新启动打印后台处理程序服务可解决问题 – hillstuk 2015-06-02 15:30:18