2

我在 Lightswitch 中创建了一个新按钮,并将此代码放入其中以仅打印一个文件:

partial void StampaDeposito_Execute()
{
    PrintDocument printInvoice = new PrintDocument();

    printInvoice.PrintPage +=
        new EventHandler<PrintPageEventArgs>(printInvoice_PrintPage);
    printInvoice.Print("TemplateEmail.htm");
} 

void printInvoice_PrintPage(object sender, PrintPageEventArgs ev)
{
    ev.HasMorePages = false;
}

但是当我单击按钮时出现以下错误:System.UnauthorizedAccessException: Invalid cross-thread access.

有没有办法解决这个问题?

4

1 回答 1

0

尝试这个:

using Microsoft.LightSwitch.Threading

partial void StampaDeposito_Execute()
{
    Dispatchers.Main.BeginInvoke(() => {
        PrintDocument printInvoice = new PrintDocument();

        printInvoice.PrintPage +=
            new EventHandler<PrintPageEventArgs>(printInvoice_PrintPage);
        printInvoice.Print("TemplateEmail.htm");
    });

} 

void printInvoice_PrintPage(object sender, PrintPageEventArgs ev)
{
    ev.HasMorePages = false;
}

当您收到有关线程访问的错误时,您通常可以通过调用主调度程序上的代码来修复它。

于 2012-08-17T12:16:39.633 回答