c#webbrowser viewer控件需要时间来处理

时间:2017-02-13 02:36:51

标签: c# pdf webbrowser-control

当关闭包含WebBrowser控件的Form并在Web浏览器中打开Pdf文档时,表单需要大约10秒才能关闭。我将问题跟踪到Web浏览器的Dispose方法。

private void advBandedGridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
    {
        if (advBandedGridView1.GetFocusedDataRow() != null)
        {
            string wordno = advBandedGridView1.GetFocusedDataRow()["wordno"].ToString();
            string itemcd = advBandedGridView1.GetFocusedDataRow()["itemcd"].ToString();

            for (int i = 0; i < _caseCount; i++)
            {
                ButtonColoring(wordno, _seqkindCode[i]);
            }

            LoadPDF(itemcd);

            gridControl2.DataSource = null;
            gridControl2.RefreshDataSource();
        }
    }

控制事件

private void LoadPDF(string itemcd)
    {
        try
        {
            ReturnPacket rp;

            rp = new Q3i.POP.BIZ.Common.CommonCode().SelectCommonCodeFull("603", "kind3 = 'EYE'", false);

            if (rp.DataTables.Count > 0 && rp.DataTables[0].Rows.Count == 0)
            {
                rp = new Q3i.POP.BIZ.Common.CommonCode().SelectCommonCodeFull("603", "kind3 = '1'", false);
            }

            if (rp.DataTables[0].Rows.Count > 0)
            {
                string dockind = string.Empty;
                dockind = rp.DataTables[0].Rows[0]["code"].ToString();

                ParameterCollection paramCol = new ParameterCollection();
                paramCol.Add("p_itemcd", itemcd);
                paramCol.Add("p_dockind", dockind);
                PdfFileInfo temp_fileInfo = biz.SelectInspectionStandards(paramCol);

                if (temp_fileInfo != null)
                {
                    if (_fileInfo != null && temp_fileInfo.FileNm == _fileInfo.FileNm)
                    {
                        WebBrowserPdf.Visible = true;
                        return;
                    }

                    _fileInfo = null;
                    _fileInfo = temp_fileInfo;

                    PDF_FILE_PATH = FilePath + _fileInfo.FileNm;

                    DirectoryInfo di = new DirectoryInfo(FilePath);
                    if (di.Exists == false)
                    {
                        di.Create();
                    }

                    if (!File.Exists(PDF_FILE_PATH))
                        File.WriteAllBytes(PDF_FILE_PATH, _fileInfo.FileData);

                    if (!PDF_FILES.Contains(PDF_FILE_PATH))
                    {
                        PDF_FILES.Add(PDF_FILE_PATH);
                    }

                    WebBrowserPdf.Navigate(PDF_FILE_PATH + "?#zoom=" + _zoomFactor + "%", false);

                    WebBrowserPdf.Visible = true;
                    simpleButtonOpenPOPUP.Enabled = true;                        
                }
                else
                {
                    WebBrowserPdf.Visible = false;
                    simpleButtonOpenPOPUP.Enabled = false;
                }
            }
        }
        catch (Exception ex)
        {
            UCXtraMsgBox.ShowDialog(ex.Message, "m0146", Q3i.Common.Enums.MsgBoxButton.OK, Q3i.Common.Enums.MsgBoxIcon.Alert, true);
        }
    }

是加载方法

private void w_pcmu081_FormClosing(object sender, FormClosingEventArgs e)
    {
        try
        {
            WebBrowserPdf.Dispose();

            Process[] Pro = Process.GetProcessesByName("osk");
            if (Pro.GetLength(0) > 0)
                Pro[0].Kill();
        }
        catch(Exception ex)
        {
            UCXtraMsgBox.ShowDialog(ex.Message, "m0146", Q3i.Common.Enums.MsgBoxButton.OK, Q3i.Common.Enums.MsgBoxIcon.Info, true, null, true);
        }
    }

1 个答案:

答案 0 :(得分:0)

同样的情况发生在我身上 Adobe在最新版本的Acrobat Reader DC(15.023.20056)中做错了。

如果取消选中编辑中的选项启动时启用保护模式 - &gt;偏好 - &gt;安全(增强),一切都会恢复正常。

就我而言,它不是一个解决方案。

此处有更多信息:https://forums.adobe.com/thread/2267688