0

WCF Ria から Crystal Report を生成する必要があるライトスイッチ アプリケーションがあります。開発ランタイムでは、エラーなしで正しく生成できますが、それをリリース環境にプッシュすると、無効なクロススレッド アクセスというエラーが表示されます。

すでにいくつかの記事を読みましたが、Silverlight UI スレッドの問題である可能性が非常に高いです

 partial void GenerateReport_Execute()
    {
        try
        {
            GenerateCrystalReport.Load();

            var temp = DataWorkspace.QUMCrystalReportDomainData.GenerateCrystalReport(SearchQuery.SelectedItem.GroupId, sQuarter, sYear, eQuarter, eYear);

            System.Windows.Deployment.Current.Dispatcher.BeginInvoke(delegate()
            {
                var uri = new Uri("C:\\Temp\\ReportTest.pdf", UriKind.RelativeOrAbsolute);

                if (AutomationFactory.IsAvailable)
                {
                    var shell = AutomationFactory.CreateObject("Shell.Application");

                    shell.ShellExecute(uri.ToString());

                }
                else if (!System.Windows.Application.Current.IsRunningOutOfBrowser)
                {
                    HtmlPage.Window.Navigate(uri, "_blank");
                }
                else
                {
                    throw new InvalidOperationException();
                }
            });
        }
        catch ( Exception ex)
        {
            MessageBox.Show(ex.ToString());                
        }

    }

私は間違ってやっていますか?これを特定するのを手伝ってください。

前もって感謝します

サム

4

1 に答える 1

0

私の質問に答えると、基本的に一番下のメッセージボックスがUIの問題を引き起こしています。

Lightswitch のディスパッチャは wpf のディスパッチャ (メッセージボックスが使用するもの) と同じではありません。間違っている場合は修正してください

于 2012-04-24T02:26:29.050 に答える