Asp.net'de geçerli olmak için abone olmanın/aboneliğin iptal edilmesine ilişkin aynı en iyi uygulama kuralları nelerdir?Asp.net'deki (elle abone olunan) etkinlikten çıkmak zorunda mıyım?
Bunun aptalca bir soru gibi göründüğünü biliyorum, ancak bunun hakkında düşündüğümde, insanların bir sayfada bir etkinliğe ilk kez abone oldukları ve daha sonra web isteğinde daha sonra aboneliği iptal ettikleri hiçbir kodu gerçekten görmedim.
Örnek 1: Bir sayfada, Page_Load yönteminde, bir ListView'deki bir güncelleştirme etkinliğine abone oluyorum. O olaydan sonra, örneğin OnPreRenderComplete yönteminde aboneliği iptal etmeli miyim?
Örnek 2: Pasif görünümde bir görünüm (Sayfa denetimi/Kullanıcı denetimi), herhangi bir şey yapması için sunucuya ihtiyaç duyduğunda bir olay ortaya çıkarır. Bu nedenle sunum yapan kişi, manzaradaki olaylara abone olmak zorundadır, ancak aynı zamanda olaylardan bir kez daha çıkmak zorunda mıdır?
Saygılarımızla, Egil.
Tamam, sadece doğru bir şekilde anladığımdan emin olmak için: asp.net önbelleğinde bir tekil nesnem varsa, bir sunum yapan kişi bu olayın üzerine abone olmamalıdır, çünkü sayfa bittiğinde singleton atılmayacaktır ve sunum yapan kişi buralarda takılacak mı? –
Evet, yanıtlarımdaki ifadeyi güncelledim. Temel olarak uzun ömürlü nesnelerinizle ilgili sayfaya (veya içindeki herhangi bir kontrole) herhangi bir referans bırakmamalısınız. Bir olay işleyici böyle bir referans olabilir. – liggett78
Sadece bir örnek: eğer uzun ömürlü bir nesneye abone olursanız ve sayfanızın yöntemlerinden birini bir işleyici olarak kullanırsanız, uzun ömürlü nesneniz sayfaya bir başvuruda bulunur. GC için sayfa hala görünür/kapsamlıdır. Etkinlik işleyicisi olarak statik bir yöntem olsa Tamam olur. – liggett78