C# 如何在几秒钟后触发事件?
我正在做一个应用程序,我想登录与人脸检测。但这不是真的,它只是让ik看起来像它的扫描。 所以当我按下“登录”按钮时,kinect会拍摄我的照片并向我展示照片,最上面的是一段文字,显示了它扫描的内容。 现在我遇到了以下问题,当我按下登录按钮时,会出现扫描标签,但我想触发另一个事件,将我带到下一页,主页。 所以我希望扫描标签出现3秒钟,然后页面应该改变。 这是我尝试过的,我用定时器工作,但那不做任何注释C# 如何在几秒钟后触发事件?,c#,events,methods,timer,C#,Events,Methods,Timer,我正在做一个应用程序,我想登录与人脸检测。但这不是真的,它只是让ik看起来像它的扫描。 所以当我按下“登录”按钮时,kinect会拍摄我的照片并向我展示照片,最上面的是一段文字,显示了它扫描的内容。 现在我遇到了以下问题,当我按下登录按钮时,会出现扫描标签,但我想触发另一个事件,将我带到下一页,主页。 所以我希望扫描标签出现3秒钟,然后页面应该改变。 这是我尝试过的,我用定时器工作,但那不做任何注释 private void ActionButton_Click(object sende
private void ActionButton_Click(object sender, System.EventArgs eventArgs)
{
_main.TakePicture();
identifyBox.Source = _main.source.Clone();
scanningLabel.Visibility = Visibility.Visible;
_storyboard = (Storyboard)FindResource("scanningSB");
//_storyboard.Begin();
Start();
}
private void Start()
{
_tm = new Timer(3000);
_tm.Elapsed += new ElapsedEventHandler(_tm_Elapsed);
_tm.Enabled = true;
}
void _tm_Elapsed(object sender, ElapsedEventArgs e)
{
if (_tm == new Timer(3000))
{
((Timer)sender).Enabled = false;
_main.ContentPage.Children.Clear();
_main.ContentPage.Children.Add(_homeScreen);
}
}
好的,我删除了if语句,但是现在它每3秒触发一个方法。
我怎样才能让它工作一次
好吧,即使这样也行,现在我的内容页不会改变了吗?它给了我这个错误:调用线程无法访问这个对象,因为另一个线程拥有它。
可能有什么问题?将“时间流逝”更改为:
void _tm_Elapsed(object sender, ElapsedEventArgs e)
{
if (_tm == (sender as Timer))
{
_main.ContentPage.Children.Clear();
_main.ContentPage.Children.Add(_homeScreen);
}
}
编辑答案:
“我只想在3秒后发射1次”
将_tm_时间更改为:
void _tm_Elapsed(object sender, ElapsedEventArgs e)
{
if (_tm == (sender as Timer))
{
_main.ContentPage.Children.Clear();
_main.ContentPage.Children.Add(_homeScreen);
}
}
编辑答案:
“我只想在3秒后发射1次”
我想你可以取消这个条件
if (_tm == new Timer(3000))
保持简单
void _tm_Elapsed(object sender, ElapsedEventArgs e)
{
((Timer)sender).Enabled = false;
_main.ContentPage.Children.Clear();
_main.ContentPage.Children.Add(_homeScreen);
}
当您设置
\u tm=新定时器(3000)时代码>它将设置3秒后触发事件的时间。我认为您可以删除该条件
if (_tm == new Timer(3000))
保持简单
void _tm_Elapsed(object sender, ElapsedEventArgs e)
{
((Timer)sender).Enabled = false;
_main.ContentPage.Children.Clear();
_main.ContentPage.Children.Add(_homeScreen);
}
当您设置\u tm=新定时器(3000)时代码>它将在3秒后设置触发事件的时间。这是可行的,但问题是它一直在运行,并且每3秒触发一次_tm_appeased方法。我只想让它在3秒后触发1次。这是可行的,但问题是它一直在继续,每3秒就会触发_tm_appeased方法。我只想让它在3秒后发射一次。我只想让它在3秒后发射一次。每隔3秒它就会继续启动?我的发送器不包含已启用的属性?如果它的计时器
,它应该具有已启用的
属性,就像您在启动
方法中使用的那样<代码>\u tm.Enabled=true代码>尝试将发送器强制转换为计时器..\u tm.Enabled=false代码>在已用处理程序内不起作用。。as\u tm
未知。。你必须使用sender
本身..我这样试过,Timer tm=(Timer)sender;tm.Enabled=false;但它仍然每3秒发射一次,我只想在3秒后发射一次。每隔3秒它就会继续启动?我的发送器不包含已启用的属性?如果它的计时器
,它应该具有已启用的
属性,就像您在启动
方法中使用的那样<代码>\u tm.Enabled=true代码>尝试将发送器强制转换为计时器..\u tm.Enabled=false代码>在已用处理程序内不起作用。。as\u tm
未知。。你必须使用sender
本身..我这样试过,Timer tm=(Timer)sender;tm.Enabled=false;但它仍然每3秒开火一次。