【发布时间】:2021-11-27 22:13:39
【问题描述】:
我尝试了许多教程,但没有找到可行的解决方案。 所以我想用 3x voids 开始我的应用程序。第一个 void 是 Popup,它实现了 Timer 并在 5 秒后消失。然后我有第二个计时器,它应该在第一个计时器之后启动。所以我决定将我的第二次无效延迟 5 秒,或者有没有其他方法可以解决它?
我的第一个计时器是来自不同 xaml 页面的弹出窗口。
无论如何,我有一个计时器可以立即随应用程序启动,我希望第二个计时器在第一个计时器结束后启动。我该如何实现呢?
这是我的代码:
public quick_math()
{
InitializeComponent();
NavigationPage.SetHasNavigationBar(this, false);
ReadyCheck(); // this is 1st Timer (5 seconds)
Execute(); // this is my program (not needed to add code of this)
Timer_02(); // second timer (should start after 1st one with delay 5 sec)
}
public void ReadyCheck()
{
Navigation.ShowPopup(new Game_Assets.ReadyCheck_popup()
{
IsLightDismissEnabled = false
}) ;
}
public void Timer_02()
{
NavigationPage.SetHasNavigationBar(this, false);
BindingContext = this;
Minimum = 0;
Maximum = 45;
ProgressValue = 45;
timerRunning = true;
time.Start();
Device.StartTimer(TimeSpan.FromSeconds(1), () =>
{
if (ProgressValue > Minimum)
{
ProgressValue--;
return true;
}
else if (ProgressValue == Minimum)
{
time.Stop();
timerRunning = false;
//PerformOperationHere logic operation here.
return false;
}
else
{
return true;
}
});
}
任何知识都会对我有用,我很感激。
@编辑 (我知道这不是最好的主意,但目前有效)
public async Task ReadyCheck() // timer 5 sec
{
int before = 0;
if(before == 0)
{
Navigation.ShowPopup(new Game_Assets.ReadyCheck_popup()
{
IsLightDismissEnabled = false
});
before++;
if(before != 0)
{
await Task.Delay(5000); // delay for second timer
Timer_02();
Execute();
}
}
}
【问题讨论】:
-
你可以让你的函数
async和使用ContinueWith()。 -
它真的对我不起作用,或者我做错了什么。有什么帮助吗?有任何想法吗?我今天花了大约 5 个小时阅读 await + async,但仍然没有找到解决我的问题的方法。
-
好的,我会用一个例子发布一个答案。
标签: c# xamarin xamarin.forms async-await xamarin.android