ホームページ > バックエンド開発 > C++ > C#で定期的に非同期方法を実行するにはどうすればよいですか?

C#で定期的に非同期方法を実行するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-26 11:01:09
オリジナル
424 人が閲覧しました

How Can I Run Asynchronous Methods at Regular Intervals in C#?

C# での非同期メソッドの定期的な実行

この記事では、非同期メソッドと while ループを使用して、C# Web アプリケーションからサービスにデータを定期的にパブリッシュするためのソリューションを提供します。

Timer クラスの制限

Timer クラスは、通常、スケジュールされたタスクに使用され、void MethodName(object e, ElapsedEventArgs args) で署名されたメソッドを受け入れます。これにより、Web サービスを呼び出す非同期メソッドを実行しようとするときに制限が生じます。

非同期タスクループ

この制限を克服するには、while ループと Task.Delay を組み合わせて使用​​できます。

<code class="language-csharp">public async Task PeriodicFooAsync(TimeSpan interval, CancellationToken cancellationToken)
{
    while (!cancellationToken.IsCancellationRequested) // 使用CancellationToken改进
    {
        await FooAsync();
        await Task.Delay(interval, cancellationToken);
    }
}</code>
ログイン後にコピー

このループは、指定された間隔と提供されたキャンセル トークンを使用して、FooAsync メソッドを定期的に実行します。ループは、Web アプリケーションからキャンセル トークンを渡すことでいつでも停止できます。

その他の注意事項

ASP.NET アプリケーションの場合、アプリケーションのパフォーマンスに影響を与える可能性のある「起動して忘れる」操作を避けることが重要です。信頼性の高いバックグラウンド タスクを確保するには、HangFire や Quartz.Net などの専用のサービスまたはツールの使用を検討してください。 これにより、タスクはアプリケーションの通常の動作の外で確実に管理され、リソースの競合が回避されます。

以上がC#で定期的に非同期方法を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート