当应用程序第一次启动时,代码会执行很长时间



我有一个WPF应用程序,它有以下代码:

    public static BitmapSource ToBitmapSource()
    {
        using (var screenBmp = new Bitmap(Convert.ToInt32(System.Windows.SystemParameters.PrimaryScreenWidth), 
            Convert.ToInt32(System.Windows.SystemParameters.PrimaryScreenHeight), 
            System.Drawing.Imaging.PixelFormat.Format32bppArgb))
        {
            using (var bmpGraphics = Graphics.FromImage(screenBmp))
            {
                bmpGraphics.CopyFromScreen(0, 0, 0,
                    0, screenBmp.Size);
                return Imaging.CreateBitmapSourceFromHBitmap(screenBmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
            }
        }
    }

以及下面的一些代码。当用户在应用程序中选择该功能时,它的代码就会执行。问题是这个代码执行时间很长,但只有当应用程序第一次在这台电脑上启动时。如果用户卸载并再次安装这个应用程序,它会很快工作。问题:

  1. 如何"回滚"系统以一次又一次地检查此问题(不想一次重新安装Windows)
  2. 调试的最佳方式(地方,真正做程序慢)
  3. 如何修复:)

感谢

  1. 您可能无法回滚Windows。一个更好的选择是使用VMware或其他虚拟机软件,然后继续重新复制磁盘文件
  2. 如果你启动一个使用大量RAM和CPU的进程(比如Prime95),你将能够真正降低你的机器速度
  3. 您基本上是在这个函数中加载一堆单独的DLL。为了使它看起来更快,请在后台线程上创建并运行此函数。这将初始化所有类。然后,当用户需要它时,所有的DLL都将被加载到内存中,从而使函数感觉更快

我不在wpf中工作,但试着在一个单独的线程中完成耗时的工作,这可能会解决你的问题。

首先,使用探查器(例如SlimTune)来查找boutleneck。

相关内容

最新更新