让我更好地解释一下我的场景。我想从网络驱动器启动.exe。我注意到,如果你查看Win XP任务管理器,一个只有一个组件(进度条)的小型.net 4表单需要大约20mb的内存。因此,一旦加载了启动窗体,它将占用任务栏中大约20mb的内存。
因此,如果.exe是从网络驱动器启动的,则客户机必须等到将整个表单加载到内存中后才能显示出来。这大约需要2-3分钟。所以它必须等待20mb的内存加载。从网络驱动器启动.exe时,立即显示闪屏的最佳方法是什么?比方说,而不是等待20MB完全下载,有没有可能显示闪屏时,只有不到1mb的下载到客户端内存?你能就如何做到这一点提供一些建议吗?
我已经通过查看客户机上的任务管理器检查了这一点,直到.exe达到大约20MB,然后显示启动表单。然后它等待,直到.exe达到大约40MB才能显示主表单。我希望闪屏显示在不到两秒钟,当exe是从网络驱动器启动,以便用户知道exe将在大约2-3分钟内完成加载。那么如何实现这一点呢?
顺便说一句,加载需要很长时间,因为客户端计算机位于异地,并且有一个VPN将这些计算机连接到中心文件服务器。这就是为什么加载需要一段时间,因为上传链接最多为1Mb。但是,一旦.exe完成加载,就不会出现速度缓慢的情况。最好的方法是拥有终端服务或citrix。但这不是目前的选择。或者在客户机上安装每个.exe,但我不希望走这条路。
发布于 2011-03-04 12:35:56
看一看ClickOnce部署。潜在地,它将允许您保留单个网络副本以便于部署,但将节省客户端下载应用程序的时间,除非应用程序已更新。
http://msdn.microsoft.com/en-us/library/t71a733d
发布于 2011-03-04 09:53:20
您可以考虑构建第二个应用程序,该应用程序只做以下工作:
-
我认为这个问题包含了您需要的代码的近似值:
发布于 2011-03-04 14:30:57
任务管理器进程选项卡中的内存使用仅限于本地,不能从网络计算机下载!当您从网络驱动器加载应用程序时,它只下载可执行文件并在本地执行它;这就是每个操作系统总是这样做的,它不会在服务器上执行和流式传输。
我在这里有一个时事通讯发送应用程序,例如,15kb的exe,4.3mb的ram加载时使用(大的数据列表,所以这是预期的)
通过VPN从美国的服务器加载到我的本地机器(我在澳大利亚的ADSL 1,512链路上...太慢了!)它在~1-2秒内加载应用程序,我不可能在1秒内下载4.3mb……我希望:)
那么你能做些什么来解决你的问题呢?
如果可执行文件很大且包含嵌入式资源(图像、视频、列表、XML等)……你可以让它们成为外部文件,并为用户显示一个加载窗口,也许也可以在本地缓存文件,这样只需要做一次,然后启动应用程序就会很快。可以通过应用程序检查和重新下载对资源的更改
如果应用程序可执行文件很小,并且没有正在访问的外部文件/资源(在网络文件夹中或在线),那么您只需要管理一些网络问题:)
https://stackoverflow.com/questions/5188741
复制相似问题