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

时间:2013-07-27 17:32:33

标签: .net wpf performance

我有一个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());
            }
        }
    }

以及下面的一些代码。当用户在应用程序中选择功能时,其代码将执行。问题是这段代码执行的时间很长,但只有当app第一次在这台PC上启动时。如果用户卸载并再次安装此应用程序 - 它可以快速工作。 问题:

  
      
  1. 如何“回滚”系统以反复检查此问题(不想重新启动Windows一次启动)
  2.   
  3. 最好的调试方法(放置,实际上慢慢编程)
  4.   
  5. 如何修复它:))
  6.   

由于

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

首先,使用分析器(例如SlimTune)找出boutleneck。