从 Main() 调用其他函数

本文关键字:其他 函数 调用 Main | 更新日期: 2023-09-27 17:56:38

我有一个函数可以更新我的UI

public void Checking()
{
    // Do Something 
}

我想在打开程序时调用这些函数:我认为我应该在main中调用它:

public MainWindow()
{
    InitializeComponent();
    Checking(); 
}

但是在这里我收到一个错误:

调用目标已引发异常。

附言:我正在使用WPF...有什么解决方案吗?

从 Main() 调用其他函数

在你的构造函数中设置Windows Loaded事件并从那里调用你的Checking()方法。在完全加载 XAML 之前,UI 尚未准备好在构造器中进行交互。WPF 有一个事件,让您知道已发生这种情况(已加载事件)。

public MainWindow()
{
    InitializeComponent();
    this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    Checking(); 
}

如果您仍然收到错误,那么您将需要查看您的内部异常,您应该被告知导致错误的原因。您还可以逐步执行 Checking() 方法以查看错误发生在哪一行。

[编辑] 下面是有关 Loaded 事件和 WPF 页面生命周期中事件顺序的一些其他资源:

MSDN: FrameworkElement.Loaded Event控制生命周期

您可以按照当前的方式使用该函数。但是 Checking() 中的某些内容可能需要加载您的面板(或其他内容)。

您可以创建一个在加载面板后触发的事件处理程序。然后你可以从那里调用你的 checking() 函数。

<StackPanel Loaded="myStackPanelLoaded" />

同样的事情也发生在我身上。

在 WPF 中,当Exception出现在引发此消息的窗体的构造函数中时。 因此,请尝试在MainFormFormLoad事件处理程序中调用 Checking() 函数。这样,您将看到程序中的Exception类型。