【发布时间】:2010-05-17 18:35:27
【问题描述】:
我正在尝试在 Winform 中创建 Global.asax。我可以在 ASP.NET 中做到这一点,但我找不到 Windows 应用程序的方法。任何帮助将不胜感激。
我有一个名为 DataAccessLayer 的单例类,我只需要实例化一次,因此我可以在应用程序的任何位置轻松调用它的方法/属性。
【问题讨论】:
我正在尝试在 Winform 中创建 Global.asax。我可以在 ASP.NET 中做到这一点,但我找不到 Windows 应用程序的方法。任何帮助将不胜感激。
我有一个名为 DataAccessLayer 的单例类,我只需要实例化一次,因此我可以在应用程序的任何位置轻松调用它的方法/属性。
【问题讨论】:
您无法将Global.asax 添加到winform 应用程序,就像您无法添加aspx 页面一样。它们是 webforms 的一部分。
Global.asax 的目的是定义应用程序和会话事件和对象。您可以通过您的 winform 应用程序的 Main() 方法执行此操作。
【讨论】:
这是因为 Global.asax 只为 Asp.NET 应用程序设计。你想达到什么目的?我们可能会为您提供替代解决方案。
只是猜测,但 global.asax 更流行的用途之一是用于应用程序范围的异常处理。如果这是您的目标,您应该看到this previous post。否则,请提出一个新问题,详细说明您要完成的工作。
【讨论】:
如果您只需要一个全局访问点,请放入一个 Global.cs 普通类,并将您的静态引用放入其中。
【讨论】:
我的 DataAccessLayer 类设置为 Singleton (sealed)
【讨论】:
sealed 不会使您的类成为单例,而是使其不可继承
add comment 按钮,那么您还没有足够的声誉)。
听起来你想加载全局变量,然后在程序结束时执行和卸载。
使用像 Oded 提到的静态类。
您还可以查看 Application.ApplicationExit 事件以获得 Application_End 和 Session_End 的等效项
http://msdn.microsoft.com/en-us/library/system.windows.forms.application.applicationexit.aspx
【讨论】: