2012-01-08 127 views
8

我在公共的MainWindow(){}里面放了一些代码,但我一做到这些,就不断收到一些晦涩的XAML解析错误(不是在我的电脑上,而是在其他3个我已经尝试过的 - yep上!)如何在C#应用程序启动时正确运行代码?

在应用程序启动时,是否有首选代码运行的方式?

理论是我想让它打电话回家,问它可以开始。如果不是,我希望应用程序关闭。称它为临时版权保护:)

+1

你在说什么技术?窗体形式? asp.net网页表单? asp.net mvc? WPF? – balexandre 2012-01-08 11:23:08

+0

@balexandre,很好的问题。我的猜测/假设是WPF,因为使用了标签和提到的XAML错误并在不同的计算机上运行它。 – Lucero 2012-01-08 11:25:39

+1

@Lucero,我添加了'wpf'标签,因为讨论了XAML错误和'MainWindow'。 – svick 2012-01-08 11:28:06

回答

19

在正常情况下,WPF会为您创建Main方法(应用程序入口点)。您的选项

  • Application.Startup事件创建处理程序,并将代码放在那里。或者,您可以覆盖OnStartup()方法。
  • 如果这对你来说太晚了,请将代码放在App的无参数构造函数中(它可能不存在,但可以创建它)。
  • 如果即使这太晚,您也可以创建自己的Main()方法。 There are several ways how to do that。最简单的方法是把它放在另一个类中,并告诉Visual Studio你想在项目的属性中使用这个方法。

另一方面,你说你得到一些模糊的XAML解析错误。也许你应该弄清楚他们到底是什么意思?

0

您有Window.Loaded事件WPF

但是,如果,如果你想检查应用程序加载之前运行许可(由于有些资源消费或者一些经营策略)使用bootstrapper一个独立的小executable首先由mainexe和推出后,如果一切ok了bootstrapper运行main exe

+0

即使在Window的构造函数之后,Window.Loaded也会被调用,OP所说的构造函数太晚了。 – svick 2012-01-08 11:28:58

+0

@svick:看不到“太迟”的观点。 OP表示,他希望在*应用程序启动后立即运行检查*。因此,imo是一个“正常”选项,可以捕捉'Window.Loaded'或者使用'bootstrapper',这个实现起来比较复杂,但实际上可能是OP想要的。 – Tigran 2012-01-08 11:34:33

相关问题