首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.net -如何将windows服务与systray应用程序连接

.net -如何将windows服务与systray应用程序连接
EN

Stack Overflow用户
提问于 2010-05-20 19:46:55
回答 8查看 1.9K关注 0票数 1

我有一个定期执行某些操作的windows服务。在用户帐户上运行与windows服务(通过.net remoting)通信的systray应用程序(用C#编写),并向用户显示状态和一些选项。

除了systray应用程序使用20-30MB的RAM之外,一切都运行得很好!它必须在终端环境下工作,当50个用户登录时,只有systray应用程序占用>1 1GB的RAM!我不需要补充,这是错误的:)

是否可以编写小的.net systray应用程序?(最大1-2MB?)或者我应该用c/c++编写它?那么,我应该在windows服务(用C#编写)和systray应用程序之间使用哪种通信方式?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-06-09 17:16:19

我在代码中添加了下面这行代码(应用程序有时会将其与GC.Collect()一起调用)

代码语言:javascript
复制
System.Diagnostics.Process.GetCurrentProcess().MaxWorkingSet =
                System.Diagnostics.Process.GetCurrentProcess().MinWorkingSet;

内存使用量下降到~2MB (从15-25MB),在使用后清空一些对象(绘图菜单和图标)后,内存使用量下降到~540KB!它会有一点增长(如果我使用上下文菜单,它会增长到~2-3MB,但随后会回落到~540KB)

因此,目标实现了:)

票数 2
EN

Stack Overflow用户

发布于 2010-05-20 20:10:06

另一个注意事项是,.NET应用程序消耗的大量内存位于共享(.NET) dll中,并且在运行多个实例时不会重复(除非操作系统使用随机的dll加载地址)。

您还可以通过将程序集安装到GAC并使用ngen对其进行预JIT编译来减少JIT编译所使用的内存。同样,这将导致内存使用量减少,除非操作系统随机化dll加载地址。

票数 2
EN

Stack Overflow用户

发布于 2010-05-20 19:52:11

您遇到的内存使用问题很可能是特定于您的应用程序的,而不是所有使用.NET构建的系统托盘应用程序。

您应该分析您的应用程序,以确定发生大内存使用的位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2873325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档