【问题标题】:Xamarin Android: C# Periodic Task (soft real-time)Xamarin Android:C# 定期任务(软实时)
【发布时间】:2016-07-09 18:15:12
【问题描述】:

我已经广泛尝试搜索这件事,但无法得出任何结论。我正在使用 Xamarin 和 Visual Studio 来设计一个 C# 语言的 Android 应用程序。该应用程序运行一个异步任务,该任务从设备麦克风中读取样本。到目前为止,还无法控制此任务的时间。代码如下:

button.Click += async delegate
{
   //do some other stuff
   await read_mic_task();
}

read_mic_task()async Task,我在其中从麦克风读取样本。我正在使用秒表测量一次执行和其他执行之间的时间,我可以看到任务以随机周期运行。我想定期执行此任务,尽管搜索了很多,但我一无所获。你能帮忙吗?

提前致谢!

【问题讨论】:

  • 您是否尝试过使用Service?这将允许您实现一个长时间运行的后台任务,即使用户打开另一个应用程序也会继续执行

标签: c# android multithreading xamarin task


【解决方案1】:

如果您还想跨平台共享它,有多种可能性我会使用系统线程计时器。这个计时器也可以在可移植类中使用。

你可以像这样使用它:

private System.Threading.Timer _timer;

...

// setup timer with callback
_timer = new System.Threading.Timer(OnTimerTick);

// start timer: duetime = 0 when to first execute callback (0 = right now) and intervall 5s
_timer.Change(0, 5000);

...

// stop timer
_timer.Change(Timeout.Infinite, Timeout.Infinite);

...

private void OnTimerTick(object state)
{
    // do the intervall stuff here
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2016-05-04
    • 2012-11-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多