2016-07-09 9 views
1

私はこの問題を頻繁に調べようとしましたが、結論に至りませんでした。私はVisual StudioでXamarinを使用してC#言語でAndroid用のアプリケーションを設計しています。このアプリは、デバイスのマイクからサンプルを読み込む非同期タスクを実行します。これまでのところ、この作業のタイミングを制御することはできません。Xamarin Android:C#定期的な仕事(ソフトリアルタイム)

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

read_mic_task()私はマイクからサンプルを読み取るたasync Taskある:次のようにコードがあります。私はストップウォッチを使用して1つの実行と他の実行の間の時間を測定しており、タスクがランダムな期間で実行されていることがわかります。私は定期的にこの仕事をしたいと思います。たくさんの検索をしても何も得られません。助けてもらえますか?

ありがとうございます!

+0

?これにより、ユーザーが別のアプリケーションを開いても実行され続ける長期実行のバックグラウンドタスクを実装できます – Demitrian

答えて

0

プラットフォーム間で共有したい場合は、複数の可能性があります。システムスレッディングタイマーを使用することもできます。このタイマーは、移植可能なクラスでも使用できます。

次のような例のためにそれを使用することができます:あなたは[ `Service`](https://developer.android.com/guide/components/services.html)を使用してみました

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 
} 
関連する問題