1

我有一个 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. 如何解决它:)

谢谢

4

3 回答 3

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

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

于 2013-07-28T01:17:27.973 回答
0

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

于 2013-07-28T01:26:02.097 回答