发布中的无效跨线程访问

时间:2012-04-18 11:47:40

标签: silverlight c#-4.0 visual-studio-lightswitch

我有一个lightswitch应用程序需要从它的WCF Ria生成Crystal Report。在开发运行时,我能够正确生成而没有错误,但当我将其推送到发布环境时,它会提示错误 - 无效的跨线程访问。

我已经阅读了一些文章,很可能是Silverlight UI Thread问题

 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());                
        }

    }

我做错了吗?请帮我识别一下。

先谢谢

萨姆

1 个答案:

答案 0 :(得分:0)

回答我的问题,基本上底部的消息框导致了UI问题。

Lightswitch的调度程序与wpf的调度程序(该消息框使用的内容)不同,如果我错了请更正