C# Xamarin是运行后台线程的最佳方式
我有个问题。我正在开发一个收集股票市场价格的应用程序,但现在最重要的部分是我每x秒打一次电话获取新价格。price变量位于App.xaml.cs中,因此它对于每个页面都是全局的,但现在我需要每3秒钟用以下行更新它:C# Xamarin是运行后台线程的最佳方式,c#,xamarin,xamarin.forms,xamarin.android,xamarin.ios,C#,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,我有个问题。我正在开发一个收集股票市场价格的应用程序,但现在最重要的部分是我每x秒打一次电话获取新价格。price变量位于App.xaml.cs中,因此它对于每个页面都是全局的,但现在我需要每3秒钟用以下行更新它:CoinList=wait RestService.GetCoins() 函数必须是异步的,因为整个RestService是异步的 我已经找到了这样的东西: var minutes = TimeSpan.FromMinutes (3); Device.StartTimer (min
CoinList=wait RestService.GetCoins()代码>
函数必须是异步的,因为整个RestService是异步的
我已经找到了这样的东西:
var minutes = TimeSpan.FromMinutes (3);
Device.StartTimer (minutes, () => {
// call your method to check for notifications here
// Returning true means you want to repeat this timer
return true;
});
但我不知道这是否是最好的方式,我应该把它放在哪里,因为它是我的应用程序最重要的部分
有什么建议吗?只需将异步方法包装到一个任务中。运行,检查下面的代码
Device.StartTimer(TimeSpan.FromSeconds(3), () =>
{
Task.Run(async () =>
{
CoinList = await RestService.GetCoins();
});
return true;
});
只需将异步方法包装到一个任务中。运行,检查下面的代码
Device.StartTimer(TimeSpan.FromSeconds(3), () =>
{
Task.Run(async () =>
{
CoinList = await RestService.GetCoins();
});
return true;
});
在这种情况下,建议对未等待的任务执行async void
,因为不等待任务。运行任务会自动吞下异常:
Device.StartTimer(TimeSpan.FromSeconds(3), async () =>
{
CoinList = await RestService.GetCoins();
return true;
});
在这种情况下,建议对未等待的任务执行async void
,因为不等待任务。运行任务会自动吞下异常:
Device.StartTimer(TimeSpan.FromSeconds(3), async () =>
{
CoinList = await RestService.GetCoins();
return true;
});
那么,你正在寻找一个计时器,对吗?我想是的,我需要通过运行Task每隔3秒更新一个变量是的,上次我检查时(2年前),计时器功能非常有限。如果您的示例较新,则更适合通过以下方式使其异步:Device.StartTimer(分钟,异步()=>{
Note2:这相当于async void
,它有一些缺点。但这是最好的方法?所以,您正在寻找一个计时器,对吗?我想是的,我需要通过运行TaskYes每隔3秒更新一个变量,上次我检查时(2年前),计时器功能非常有限。如果您的示例较新,那么它更适合做注释您可以通过:Device.StartTimer(分钟,async()=>{
Note2:它相当于async void
,有一些缺点。但这是最好的方法吗?