2

Lightswitch で新しいボタンを作成し、このコードを内部に配置して、1 つのファイルのみを印刷します。

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 に答える