例如。我有一些Timer,我在我的Window构造函数中初始化它。
public MainWindow()
{
InitializeComponent();
CheckTImer = new Timer(3000);
CheckTimer.Elapsed += CheckTimer_Elapsed;
CheckTimer.Start();
}
这是我的CheckTimer_Elapsed方法:
void CheckTimer_Elapsed(object sender, ElapsedEventArgs e)
{
MessageBox.Show("FirstText");
Image IMG = new Image();
MessageBox.Show("SecondText");
}
为什么只加载第一个MessageBox窗口?但是,如果它是由定时器调用的函数,则一切正常。
public MainWindow()
{
InitializeComponent();
SomeFunc();
}
void SomeFunc()
{
MessageBox.Show("FirstText");
Image IMG = new Image();
MessageBox.Show("SecondText");
}
答案 0 :(得分:0)
我认为这是一个线程问题。
如果我记得从计时器调用的事件是在新线程上。您正在尝试执行不在UI线程上的UI工作(不允许)。对此有几个解决方案,其中最简单的方法是使用DispatcherTimer而不是Timer。你可以在System.Windows.Threading中找到它;
从DispatcherTimer调用的事件位于UI线程
希望这有帮助