Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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# 如果winforms应用程序在未分离其事件处理程序的情况下关闭,SystemEvents.TimeChanged是否会泄漏?_C#_.net_Winforms - Fatal编程技术网

C# 如果winforms应用程序在未分离其事件处理程序的情况下关闭,SystemEvents.TimeChanged是否会泄漏?

C# 如果winforms应用程序在未分离其事件处理程序的情况下关闭,SystemEvents.TimeChanged是否会泄漏?,c#,.net,winforms,C#,.net,Winforms,一方面,说 。。。应用程序运行时,必须分离事件处理程序 已处置,否则将导致内存泄漏 另一方面,说: 不影响桌面应用程序 那么,事件的文档仅仅依赖于类的属性吗?或者它也会从Winforms应用程序中泄漏?底线:请参见-如果SystemEvents引用了表单,则该表单将不会获得GC'd。我不完全确定我是否理解您的问题或第二个摘录的相关性,但从事件的文档中可以看出,未能分离事件处理程序将导致内存泄漏。第二个链接表示HostProtectionAttribute不适用,而不是主机仅仅因为不适用而不受泄漏

一方面,说

。。。应用程序运行时,必须分离事件处理程序 已处置,否则将导致内存泄漏

另一方面,说:

不影响桌面应用程序


那么,事件的文档仅仅依赖于类的属性吗?或者它也会从Winforms应用程序中泄漏?

底线:请参见-如果
SystemEvents
引用了表单,则该表单将不会获得GC'd。我不完全确定我是否理解您的问题或第二个摘录的相关性,但从事件的文档中可以看出,未能分离事件处理程序将导致内存泄漏。第二个链接表示HostProtectionAttribute不适用,而不是主机仅仅因为不适用而不受泄漏的影响。我认为您应该正确地处理所有静态资源,因为它们是跨进程共享的,很可能会导致泄漏。这取决于您如何声明。如果您通过设计器添加了计时器,那么您就不必担心如何处理它。如果计时器是通过本地方法声明的(作用域不在类级别),则可能会出现问题。@sfdcfox谢谢。这是有道理的。你不能“泄露”SystemEvents,它是一个静态类。当您不取消订阅事件时,您肯定会泄漏表单对象,因为SystemEvents有一个对它的引用,所以它永远不会被垃圾收集。