Wpf应用程序启动似乎运行两次

时间:2015-01-18 16:15:29

标签: wpf vb.net

我有一个多项目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")

我最后得到两个消息框。

1 个答案:

答案 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'