Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mencegah Penyekatan UI Semasa Panggilan API di Blazor?

Bagaimanakah Saya Boleh Mencegah Penyekatan UI Semasa Panggilan API di Blazor?

Linda Hamilton
Linda Hamiltonasal
2024-12-30 11:32:10714semak imbas

How Can I Prevent UI Blocking During API Calls in Blazor?

Kemas Kini UI Tidak Menyekat Semasa Panggilan API dalam Blazor

Apabila membuat panggilan API dalam aplikasi Blazor, adalah penting untuk memberikan maklum balas kepada pengguna, yang menunjukkan bahawa tindakan adalah sedang berjalan. Ini boleh dicapai dengan memaparkan kursor pemutar atau tunggu.

Pilihan 1: Menggunakan Task.Delay(1)

Kaedah ini melibatkan menjalankan tugas tak segerak dan termasuk menunggu Task.Delay(1) di dalamnya. Ini membolehkan perubahan disiram dan UI dikemas kini sebelum operasi yang berjalan lama bermula.

private async Task AsyncLongFunc()
{
    spinning = true;
    await Task.Delay(1); // Flushing changes
    LongFunc(); // Non-async code
    currentCount++;
    spinning = false;
    await Task.Delay(1); // Flushing changes again
}

Pilihan 2: Menggunakan Task.Run() (Bukan untuk WebAssembly)

Ini pendekatan melibatkan melampirkan operasi jangka panjang dalam tugasan, memastikan ia tidak menyekat tugas utama benang.

async Task AsyncLongOperation()
{
    spinning = true;
    await Task.Run(() => LongOperation()); // Enclose in a task
    currentCount++;
    spinning = false;
}

Kesan dan Had

Kedua-dua kaedah memaparkan pemutar secara berkesan semasa panggilan API. Walau bagaimanapun, pemutar mungkin tidak muncul jika prapemarahan sebelah pelayan didayakan dalam apl Pelayan Blazor. Untuk menyelesaikan masalah ini, operasi yang panjang harus dikendalikan dalam acara OnAfterRender.

Contoh Projek

Teroka projek sumber terbuka BlazorPro.Spinkit untuk mendapatkan lebih banyak contoh dan teknik untuk melaksanakan pemutar dalam aplikasi Blazor anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencegah Penyekatan UI Semasa Panggilan API di Blazor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn