WinForm WebBrowser控件加载缓慢

时间:2019-07-15 09:19:15

标签: c# winforms webbrowser-control

我已经使用网络浏览器控件在win-form弹出窗口中显示HTML文本:

webBrowserCharges.DocumentText ="HTML string";

但是,第一次打开时,它花费了太多时间。当我再次单击时,它将快速显示数据。

在winform中,我编写了以下代码以获取数据并在Web浏览器控件中显示

DataSet DsPaymentReceipt;
DsPaymentReceipt = _wbSrv.GetTESTDATA("TEST DATA", FromDt, ToDt);
if (DsPaymentReceipt != null && DsPaymentReceipt.Tables.Count > 0 && DsPaymentReceipt.Tables[0].Rows.Count > 0)
            {
                webBrowserCharges.DocumentText = Convert.ToString(DsPaymentReceipt.Tables[0].Rows[0]["StrXml"]);
            }

但是上面的代码并不需要花费时间来获取或分配数据集值。

为什么第一次需要时间,我不知道。

1 个答案:

答案 0 :(得分:0)

我认为您只需要Ngen您的exe

public static void NgenApplication()
    {
        if (!ApplicationDeployment.IsNetworkDeployed || !ApplicationDeployment.CurrentDeployment.IsFirstRun) return;

        string appPath = Application.StartupPath;
        string winPath = Environment.GetEnvironmentVariable("WINDIR");

        using (var proc = new Process())
        {
            Directory.SetCurrentDirectory(appPath);

            proc.EnableRaisingEvents = false;
            proc.StartInfo.CreateNoWindow = false;
            proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

            proc.StartInfo.FileName = $@"{winPath}\Microsoft.NET\Framework\v2.0.50727\ngen.exe";
            proc.StartInfo.Arguments = $"uninstall {Application.ProductName} /nologo /silent";

            proc.Start();
            proc.WaitForExit();

            proc.StartInfo.FileName = $@"{winPath}\Microsoft.NET\Framework\v2.0.50727\ngen.exe";
            proc.StartInfo.Arguments = $"install {Application.ProductName} /nologo /silent";

            proc.Start();
            proc.WaitForExit();
        }
    }