Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WINDOWSFORMAPPLICATIONBASE.RUN(字符串())占用太多cpu_C#_Performance - Fatal编程技术网

C# WINDOWSFORMAPPLICATIONBASE.RUN(字符串())占用太多cpu

C# WINDOWSFORMAPPLICATIONBASE.RUN(字符串())占用太多cpu,c#,performance,C#,Performance,大家好,我有一个相当简单的问题,我有一个多线程应用程序,用于执行一些定期的网络更新 我有一个表单,比如mainForm和一个CustomuserControl来显示网络更新,现在在我们的mainForm上我们有一个按钮,在这个按钮上单击我们可以添加任意多的CustomUSerControls,但是它消耗了太多的内存和cpu使用量,当我通过visual studio中包含的performance analyzer时,它向我显示 MICROSOFT.VisualBasic.ApplicationSe

大家好,我有一个相当简单的问题,我有一个多线程应用程序,用于执行一些定期的网络更新 我有一个表单,比如mainForm和一个CustomuserControl来显示网络更新,现在在我们的mainForm上我们有一个按钮,在这个按钮上单击我们可以添加任意多的CustomUSerControls,但是它消耗了太多的内存和cpu使用量,当我通过visual studio中包含的performance analyzer时,它向我显示

MICROSOFT.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(string())

这种方法占用了将近70-80%的cpu使用率,我不知道它占用了多少内存。有人能解释一下吗?请

您的UI代码中有一个循环,它不断地在做一些事情,并且正在使用cpu

检查您正在进行的任何轮询,或者在轮询中设置暂停,或者将其更改为基于事件的系统,该系统仅在您的类接收到可处理信息的信号时处理信息

如果您已经在侦听某个事件,但该事件被频繁激发,则可能需要找到一种方法来减少激发的事件数,或者只在经过足够的时间后处理事件处理程序

不幸的是,如果没有看到导致代码缓慢的确切代码,我无法得到比这更具体的信息。我建议使用代码探查器来查找哪些代码行(您向我们展示的代码行是.NET framework代码,您对此无能为力)被调用最多,并找出如何优化它们。

首先,您可以尝试使用 var p=系统.诊断.进程.启动(…)

(您可以使用p等待进程终止)

隐藏的代码比您描述的方法更简单、更快

另一个选项是,如果自动启动的网络应用程序也是.NET应用程序,并且您有其源:

1) 将网络应用程序分为两部分:加载程序(.exe文件)和移动.dll文件中的网络更新方法(向解决方案中添加库项目,并将使用的更新方法源文件移动到此新库项目)

2) 在网络应用程序加载器和表单应用程序中添加对库项目的引用

3) 从表单应用程序:不要启动网络应用程序加载器,而是直接调用库项目中的网络更新方法


使用第二种方法,表单应用程序只需加载一个dll(比每次需要网络更新时启动一个新应用程序快得多)。

好的,谢谢您的时间和宝贵的回答,我必须不断地检查网络更新,我不能等待信号,因为有一些要求,而且你是对的,我有一个代表正在设置一些文本属性和保存一些信息,所以问题是在上述方法中没有的其他地方