1

抱歉重复,但我还有另一种情况。我有一个实现 printPreview 和打印过程的小程序。

private void printDocument1_PrintPage(object sender, Drawing.Printing.PrintPageEventArgs e)
{
    e.Graphics.DrawString(
        "Hello World",
        new Font("Times New Roman", 16, FontStyle.Bold),
        Brushes.Black, 10, 10);
}

private void button1_Click(object sender, EventArgs e)
{
    string str = "";
    for (int i = 0; i < PrinterSettings.InstalledPrinters.Count; i++)
    {
        str += PrinterSettings.InstalledPrinters[i] + "\n";
    }

    MessageBox.Show(str);

    try
    {
        printPreviewDialog1.Document = printDocument1;
        PrinterSettings prnSet = new PrinterSettings();

        if (PrinterSettings.InstalledPrinters.Count > 0)
        {
            PageSettings ps = new PageSettings(prnSet);
            ps.Margins.Left = 10;
            ps.Margins.Right = 20; ps.Margins.Top = 10; ps.Margins.Bottom = 20;
            printPreviewDialog1.ShowDialog();
        }            
    }
    catch (Exception ex) { MessageBox.Show(ex.ToString()); }            
}

private void button2_Click(object sender, EventArgs e)
{
    printDialog1.Document = printDocument1;
    printDialog1.ShowDialog();
}

当我从 VS 运行它时,一切正常,但是当我从发布文件夹运行它时 - 我得到了这个异常:

System.ComponentModel.Win32Exception (0x80004005): Server RPC is unavailable
    at System.Drawing.Printing.PrinterSettings.get_InstalledPrinters()
    at printStudy.Form1.button1_Click(Object sender, EventArgs e) in c:\printStudy\Form1.cs:line 37
    at System.Windows.Forms.Control.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnClick(EventArgs e)
    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.Control.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

我试图重新启动打印机假脱机过程但没有结果。(用户具有管理员权限)。

PS我设置Debug->Exceptions检查VS中抛出的所有内容,因为VS在调试期间向我显示任何异常,但VS启动程序没有任何问题。为什么从发布/调试文件夹运行它时会出现问题?以及如何解决?

4

0 回答 0