Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menjalankan Kaedah Asynchronous pada Set Interval dalam Aplikasi Web C#?
Melaksanakan Operasi Tak Segerak Berjadual Secara Tetap dalam Aplikasi Web C#
Cabaran:
Banyak aplikasi web C# memerlukan pelaksanaan tugas secara berkala, seperti menghantar data penggunaan ke perkhidmatan jauh, tanpa menjejaskan tindak balas permintaan pengguna. Ini memerlukan mekanisme yang serupa dengan fungsi setInterval
JavaScript, tetapi dalam konteks tak segerak C#.
Pendekatan:
Walaupun kelas Timer
menawarkan mekanisme pemasaan, pengendali acara Elapsed
nya memerlukan tandatangan kaedah segerak. Penyelesaian yang lebih teguh dan fleksibel melibatkan gelung while
digabungkan dengan Task.Delay()
:
<code class="language-csharp">public async Task ExecutePeriodicallyAsync(TimeSpan interval, CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { await MyAsyncMethod(); await Task.Delay(interval, cancellationToken); } }</code>
Kod ini secara tak segerak memanggil MyAsyncMethod()
pada interval
yang ditentukan. CancellationToken
membenarkan penamatan gelung yang anggun.
Pertimbangan Penting untuk ASP.NET:
Dalam konteks ASP.NET, hanya memulakan tugas ini dan melupakannya ("api-dan-lupakan") adalah sangat tidak digalakkan. Ini boleh menyebabkan kebocoran memori dan ketidakstabilan aplikasi. Untuk pengurusan tugas latar belakang yang boleh dipercayai dalam ASP.NET, pertimbangkan alternatif ini:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjalankan Kaedah Asynchronous pada Set Interval dalam Aplikasi Web C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!