从Main()调用其他函数

时间:2013-01-29 04:35:42

标签: c# .net wpf main

我有一个功能可以更新我的UI

public void Checking()
{
    // Do Something 
}

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

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

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

  

调用目标抛出了异常。

P.S:即时通讯使用WPF ... 对此有何解决方案?

3 个答案:

答案 0 :(得分:1)

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

public MainWindow()
{
    InitializeComponent();
    this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    Checking(); 
}

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

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

MSDN: FrameworkElement.Loaded Event Control Lifecycle

答案 1 :(得分:0)

您可以按照您使用的方式使用该功能。但是,Checking()中的某些内容可能需要加载Panel(或其他内容)。

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

<StackPanel Loaded="myStackPanelLoaded" />

答案 2 :(得分:0)

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

在WPF中,当Exception出现在表单的构造函数中时,抛出此消息。因此,请尝试在Checking()的{​​{1}}事件处理程序中调用FormLoad函数。通过这种方式,您将看到您的计划中有MainForm种类。