WPF 在 .NET Framework 4.0 中的 x64 上启动缓慢

2024-06-25

我注意到,如果我为任何 CPU/x64 构建 WPF 应用程序,则与在 x86 上启动(在发布和调试模式下)相比,启动(大约 20 秒)或加载新控件所需的时间要长得多,VS 的内部或外部)。即使是最简单的 WPF 应用程序也会出现这种情况。该问题讨论于这个 MSDN 线程 http://social.msdn.microsoft.com/Forums/en/netfx64bit/thread/476e21c4-6b73-4f8e-bfab-a7aaae5b017f,但那里没有提供答案。这种情况仅发生在 .NET 4.0 中——在 3.5 SP1 中,x64 与 x86 一样快。有趣的是,微软似乎知道这个问题,因为 VS2010 中新的 WPF 项目默认是 x86。

这是一个真正的错误还是我只是做错了?

EDIT:可能与此相关:C# .NET 4.0 中的数据绑定设置时间缓慢 https://stackoverflow.com/questions/2788215/slow-databinding-setup-time-in-c-net-4-0。我大量使用数据绑定。


实际上,WPF 应用程序的默认项目类型是 x86 有两个主要原因。

  • Intellitrace 调试仅适用于 x86,如果默认项目模板不能使用其明星功能之一,那看起来会很糟糕。
  • 许多开发人员仍然不知道他们的 AnyCPU exe 可以在 64 位计算机上以 x64 运行,并且惊讶地发现他们所依赖的 32 位 DLL 在 64 位版本中并不存在,例如 OLEDB 驱动程序、某些本机 DLL 等。

至于您遇到的启动时间问题,它几乎看起来像是 NGEN 的问题。由于 x64 和 x86 进程有不同的 NGEN 缓存,因此可能需要重建或更新 64 位 NGEN 缓存。尝试从提升的命令提示符运行以下命令:

CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319
NGEN update

这是为已标记为 NGEN 的程序集重新构建本机映像的命令。如果程序集不在 GAC 中,那么它也可能不会对您的应用程序的 NGEN 产生任何好处,因此我不会费心尝试这样做。但框架程序集、工具包程序集等都应该是 NGEN 的。

(顺便说一句,当我运行上述命令时,我确实遇到了一些关于无法加载程序集的错误。主要是 SQL 和 Visual Studio 程序集。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 在 .NET Framework 4.0 中的 x64 上启动缓慢 的相关文章

  • WPF 绑定无法与 int 类型的属性正常工作

    我拥有以下财产int输入我的视图模型 该模型绑定到TextBox 一切正常 TwoWay绑定工作正常 除了一种情况 如果我清除的值TextBox 属性设置器不会被调用 尽管值已被清除TextBox 属性仍保持先前的值 有人遇到过类似的问题吗
  • 有没有办法让控制台应用程序仅使用 .NET Core 中的单个文件运行?

    在 NET框架中 您可以制作一个 EXE将从命令行运行的文件 无需任何额外的配置文件 如果使用 ILMerge 您可以将所有 DLL参考文献1 EXE集会 我正在尝试使用 NET Core 来完成同样的事情 但到目前为止还没有成功 即使是最
  • 排除以特定字符开头的正则表达式匹配

    我有以下内容 Regex urlRx new Regex https ftp file www A Za z0 9 A Za z0 9 RegexOptions IgnoreCase 这匹配所有 URL 但我想排除那些以字符开头的 URL
  • .NET DateTime 到 time_t(以秒为单位)

    有C代码 time1 double dt1 25569 0 86400 0 它以秒为单位从 TDateTime VCL 转换为 time t 格式 所以最后我需要得到time t NET DateTime 的格式 关于 time t 几乎普
  • 调试调用 .Net(C#) dll 的 VB6 项目

    我已经被这个问题困扰了几个小时了 我希望有人遇到过类似的问题 我们使用 VS2010 开发了一个原型 Net C dll 并希望能够在 C 应用程序和 VB6 应用程序中调用该 dll 我的问题是 是否可以调试调用 Net dll 的 VB
  • 获取 SSRS 的报告列表?

    我刚刚开始使用 SSRS 到目前为止 我已经能够通过对报告路径进行硬编码 使用 ReportViewer 在我的 Winforms 应用程序中显示报告 我想从 SSRS 获取一份报告列表 以便我可以显示它们并让用户选择他们想要查看的报告 有
  • 在 ReflectionOnly 模式下将程序集加载到新的 AppDomain 时,方法没有实现

    在我们的应用程序 包含 65 个项目的解决方案 中 所有引用的程序集都会在运行时分析是否存在 Ninject 模块 也应用了一些过滤 这些模块稍后会加载到 Ninject 内核中 并且每个模块都会声明内核的绑定 我们采用了一个加载器 以仅反
  • 新的 SDK 项目在 Visual Studio 中缺少“启动外部命令”

    旧的 NET 项目在调试下有一个选项 允许 启动外部命令 如图所示 当我使用新的SDK样式创建新项目时 我看不到相同的选项 如下图 有办法拿回来吗 两张图片均取自同一个 VS 因此与版本无关 我发现的解决方法是正常运行程序并附加到它 但这并
  • 快速将每秒一个字节复制到新的内存区域

    我需要一种快速方法将每个第二个字节复制到新的 malloc 内存区域 我有一个包含 RGB 数据且每通道 16 位 48 位 的原始图像 并且想要创建每通道 8 位 24 位 的 RGB 图像 有没有比按字节复制更快的方法 我对SSE2了解
  • Neo4j 超级节点问题 - 扇出模式

    我是图形数据库场景的新手 正在研究 Neo4j 并学习 Cypher 我们正在尝试对图形数据库进行建模 这是一个相当简单的数据库 我们得到了users 我们得到了movies users can VIEW movies RATE movie
  • 更新到 ASP.NET Core 2.0 - 软件包与 netcoreapp2.0 不兼容

    我正在尝试更新到 NET Core 2 0 但在使用参考安装的所有软件包上都遇到这些错误 问题可能是 我正在参考netcoreapp1 0在输出中 Microsoft EntityFrameworkCore Tools DotNet 2 0
  • SerialPort.Open() --IOException --“参数不正确。”

    我编写了以下代码来在加载 MainForm 时配置串行端口 第一次运行时它给出IOException打开端口时 提示参数不正确 但当我重新启动应用程序时 它工作正常 仅当应用程序在启动计算机后第一次运行时才会出现异常 然后它可以正常工作直到
  • 如何将 CroppedBitmap 转换为 BitmapImage

    我正在尝试将 CroppedBitmap 转换为 BitmapImage 编辑 不使用内存流 我尝试过直接转换它 似乎这不是一个选择 这应该没那么难 我正在尝试剪切 BitmapImage 的一部分 并创建一个仅包含新裁剪的 Bitmap
  • 如何处理作为参数传递到方法中的 Lambda 表达式 - C# .NET 3.5

    我对 Lambda 表达式的了解有点不稳定 虽然我可以编写使用 Lambda 表达式 又名 LINQ 的代码 但我正在尝试编写自己的方法 该方法采用一些 Lambda 表达式类型的参数 背景 我正在尝试编写一个方法 该方法从任何其他对象类型
  • 在 Javascript 中实现 Zobrist 哈希

    我需要在 Javascript 中为国际象棋引擎实现 Zobrist 哈希 我想知道实现此目的的最佳方法是什么 现在 我不是计算机科学家 也从未上过正式的算法和数据结构课程 所以如果我在这方面有点偏离 我很抱歉 据我了解 我需要一个 64
  • 使用私有构造函数的 C# 单元测试类?

    好吧 我刚刚收到一个作业 我必须对具有私有构造函数的类执行单元测试 现在 当所有方法也都是非静态时 我该如何在不初始化类的情况下进行单元测试 有什么方法可以对具有私有构造函数的类进行单元测试 无需反射 如果您无法将类公开 您仍然可以通过以下
  • Excel 2007 中的数值 - 底层 xml 文件中的表示与存储

    这个问题与 NET和OpenXml有关 我已经阅读了以下文章 它有很好的解释 但没有回答我的问题 Excel 2007 中数值的可视化与底层 xml 文件不一致 https stackoverflow com questions 58594
  • 如何从另一个线程阻止 UI 线程或强制表单在 UI 线程内运行

    我的应用程序的一个要求是 如果它失去数据库连接 那么它必须弹出一个大模式 无连接 稍后重试 对话框 阻止所有用户交互 直到重新获得连接为止 我通过在应用程序启动时启动 DeviceMonitor 类的实例来实现此目的 该类创建一个 Syst
  • 在 R 中提取栅格的最快方法(提高我的可重现代码的时间)

    我想知道我是否已最大化提取栅格中某个点周围缓冲区域平均值的速度 本地的性能可以进一步提高吗 I use parallel mclapply已经 我知道我可以通过在集群上设置和运行它来获得进一步的收益 使用集群或获得更多的CPU不是我正在寻找
  • 为什么变量 1 += 变量 2 比变量 1 = 变量 1 + 变量 2 快得多?

    我继承了一些 Python 代码 用于创建巨大的表 最多 19 列宽 5000 行 花了九秒用于在屏幕上绘制表格 我注意到每一行都是使用以下代码添加的 sTable sTable n GetRow where sTable是一个字符串 我将

随机推荐

  • 通过.NET/C#发送传真

    如何在 NET 中发送传真 我们有一个传真服务器 我们需要通过它将文件传真给客户 由于我们有传真服务器 我不认为我必须在我的机器上配置传真调制解调器 对吧 它只会通过传真服务器吗 有没有好的免费 或便宜 传真 API 在我的研究中 我遇到过
  • 为什么上传文件时出现错误[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 error True apiversion 35 errorCode api error job upload invalid messag
  • 使用 JLabel 修复 JScrollPane

    为了添加背景图像 我使用 JLabels 而不是 JPanel JFrame frame new JFrame frame setDefaultCloseOperation JFrame EXIT ON CLOSE JLabel label
  • 如何从动态查询中插入具有多列的表?

    如同上一个问题 https stackoverflow com questions 34194889 how to insert into table from dynamic query对于一对一映射 我需要一个针对源和目标中的多个列的解
  • Java - Jena API - 输出文件

    我正在使用 Java 和 Jena API 我有课Person与数据类型属性hasFirstName hasLastName hasDateOfBirth hasGender 以下是我的 RDF 文件中一个人的表示方式
  • 应用程序网关前面的 Azure 前门

    我已在应用程序网关的前面部署了 Azure Front Door 现在 我想通过 Front Door 路由所有流量 并限制对应用程序网关的公共 IP 地址的直接访问 怎么做 这就是我想做的 https i stack imgur com
  • 为每个轮询获取特定的记录集,而不在骆驼中设置标志

    我需要从数据库中选取所有消息并将其发送以进行重新处理 我的主要要求是 我应该为每个轮询只获取一定数量的记录 而不是所有记录 下一次民意调查应该让我得到下一组记录并将其设置为进行处理 我不应该在表中使用processedFlag 列 这是不允
  • 为什么 calc 在用于 font-size 时不重新计算?

    我尝试将 VW 和 calc 一起使用并且有效 但只计算一次 加载时间 http codepen io anon pen mJOGbr http codepen io anon pen mJOGbr html font size calc
  • 在引导下拉元素上使用 intro.js

    我不知道如何在下拉元素上使用 intro js 我发现了一个类似的问题 但没有答案 IntroJS Bootstrap 菜单不起作用 https stackoverflow com questions 20071122 introjs bo
  • 在 Tensorflow 中实现对比损失和三元组损失

    我两天前开始玩 TensorFlow 我想知道是否有三元组和对比损失的实现 我一直在看文档 https www tensorflow org versions r0 9 api docs python nn html losses 但我还没
  • 字体在 IE 10 中不起作用

    我完全没有成功让 IE 10 显示自定义字体 还有其他人解决这个问题吗 我可以在网上看到一些人在 IE 10 中使用字体时遇到问题 但没有找到解决方案或已确认的错误 有人有相同的经历或解决方案吗 这就是我现在所拥有的 它在 10 之前的 I
  • 返回中断处理程序后程序计数器去了哪里?

    您好 我想知道当程序从中断服务程序返回时程序计数器去哪里 我知道当中断事件发生时PC被压入堆栈 但是下一个或同一个 刚刚执行的一个 被压入堆栈的地址是什么 当我们有 first instruction interrupt event her
  • 在 SimpleDateFormat 模式字符串中使用字母字符

    是否可以在 SimpleDateFormat 模式字符串中包含字母字符 我正在尝试创建一个格式字符串 其中在时间之前包含字母 T 例如 2003 11 15T09 30 47 05 00 我目前正在使用yyyy MM ddhh mm ssZ
  • 将多个虚拟变量转换为一列[重复]

    这个问题在这里已经有答案了 我想转换一个如下所示的表 Blue Green Red Thing 1 No Yes No Thing 2 Yes No No Thing 3 Yes No No 改成这样的风格 Color Thing 1 Gr
  • 如何将redis中的数据保存到磁盘中的文件并读回redis?

    我可以在程序中写入 Redis 并从中读取 但是 关闭服务器后 我猜数据已从内存中删除 如何将redis中的数据保存到磁盘中 以便下次打开redis时 它可以打开数据 让控制台程序读取它吗 如果我的电脑突然断电重启 redis可以恢复状态吗
  • Webpack“OTS 解析错误”加载字体

    我的 webpack 配置指定应使用加载字体url loader 当我尝试使用 Chrome 查看该页面时 出现以下错误 OTS parsing error invalid version tag Failed to decode down
  • 从 JSP 文件中的会话范围 bean 访问数据

    我正在尝试在 Spring Web MVC 3 中开始使用会话范围的 bean 我将这一行放入我的调度程序配置中
  • Linq OrderBy(Byte[]) 值

    public class foo int ID get set byte sort get set public class barMaster public void FooSource return List
  • 如何在文件上传和插入数据库的同时加载 gif

    我必须先将文件加载到临时位置 然后再读取文件并将其插入数据库 但是我如何在执行所有这些操作时包含加载 gif 有人可以告诉我吗 谢谢
  • WPF 在 .NET Framework 4.0 中的 x64 上启动缓慢

    我注意到 如果我为任何 CPU x64 构建 WPF 应用程序 则与在 x86 上启动 在发布和调试模式下 相比 启动 大约 20 秒 或加载新控件所需的时间要长得多 VS 的内部或外部 即使是最简单的 WPF 应用程序也会出现这种情况 该