我有一个多项目WPF应用程序,启动项目现在已超过这个,因为它是XAML;
<Application x:Class="Application"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup" ShutdownMode="OnLastWindowClose">
</Application>
并且在Application_Startup中我有以下内容;
Private Sub Application_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
SiAuto.Si.Connections = "tcp()"
SiAuto.Si.Enabled = True
SiAuto.Main.LogMessage(My.Application.Info.Title & " started")
Dim controller As New MainRibbonController(New MainRibbonService)
controller.Start
End Sub
SiAuto只是一种日志记录操作。当我启动应用程序时,我在SiAuto日志消息行生成的日志中得到两个条目,然后我最终得到两个MainRibbonForms。显然,Application_Startup运行了两次,但我无法找出原因。
之前有没有人见过这种行为,并且可以建议我应该在哪里寻求纠正这个问题。不幸的是,WPF和XAML对我来说还是比较新的,我真的不确定我应该在哪里看。 选项严格在所有项目中,一切都编译没有错误,所以我的猜测是我在某些地方做了一些愚蠢的语法错误,无法理解WPF应用程序是如何真正开始的。
如果我用
替换所有application_startup代码MessageBox.show("Hi")
我最后得到两个消息框。
答案 0 :(得分:2)
我遇到了完全相同的问题:我的Application.xaml是
<Application x:Class="Application"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup">
<Application.Resources>
</Application.Resources>
</Application>
Application_Startup子被触发两次:如果我尝试创建一个新的主窗口并显示它,当我启动应用程序时,会显示两个窗口。如果我在子中放置一个简单的MsgBox,则消息显示两次。
Private Sub Application_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
MsgBox("Application_Startup")
End Sub
问题似乎是“Handles”条款。 sub的签名必须是
Private Sub Application_Startup(sender As Object, e As StartupEventArgs)
没有'处理Me.Startup'