如何在Timer方法中创建Image?

时间:2014-05-18 18:19:24

标签: c# wpf timer

例如。我有一些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");
}

1 个答案:

答案 0 :(得分:0)

我认为这是一个线程问题。

如果我记得从计时器调用的事件是在新线程上。您正在尝试执行不在UI线程上的UI工作(不允许)。对此有几个解决方案,其中最简单的方法是使用DispatcherTimer而不是Timer。你可以在System.Windows.Threading中找到它;

从DispatcherTimer调用的事件位于UI线程

希望这有帮助