Dispatcher Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan layanan untuk mengelola antrean item kerja untuk utas.
public ref class Dispatcher sealed
public sealed class Dispatcher
type Dispatcher = class
Public NotInheritable Class Dispatcher
- Warisan
-
Dispatcher
Contoh
Contoh berikut menunjukkan cara menempatkan operasi ke Dispatcher. Untuk kode sumber lengkap contoh ini, lihat AplikasiSingle-Threaded dengan Sampel Perhitungan Long-Running.
Pertama, delegasi dibuat yang tidak menerima argumen.
public delegate void NextPrimeDelegate();
Public Delegate Sub NextPrimeDelegate()
Selanjutnya, BeginInvoke(DispatcherPriority, Delegate) dipanggil. Panggilan ini untuk BeginInvoke(DispatcherPriority, Delegate) mengambil dua parameter: prioritas, yang diatur ke DispatcherPriority.Normal, dan panggilan balik, yang diteruskan melalui instans delegasi NextPrimeDelegate.
startStopButton.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
new NextPrimeDelegate(CheckNextNumber));
startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New NextPrimeDelegate(AddressOf CheckNextNumber))
Keterangan
mempertahankan Dispatcher antrean item kerja yang diprioritaskan untuk utas tertentu.
Ketika dibuat pada utas, itu menjadi satu-satunya DispatcherDispatcher yang dapat dikaitkan dengan utas, bahkan jika Dispatcher dimatikan.
Jika Anda mencoba untuk mendapatkan CurrentDispatcher untuk utas saat ini dan Dispatcher tidak terkait dengan utas, akan Dispatcher dibuat. Juga Dispatcher dibuat saat Anda membuat DispatcherObject. Jika Anda membuat Dispatcher pada utas latar belakang, pastikan untuk mematikan dispatcher sebelum keluar dari utas.
Dispatcher Jika dimatikan, maka tidak dapat dimulai ulang.
Di WPF, DispatcherObject hanya dapat diakses oleh Dispatcher yang terkait dengannya. Misalnya, utas latar belakang tidak dapat memperbarui konten yang terkait dengan Dispatcher pada utas Button UI. Agar utas latar belakang dapat mengakses Content properti Button, utas latar belakang harus mendelegasikan pekerjaan ke Dispatcher yang terkait dengan utas UI. Ini dicapai dengan menggunakan atau InvokeBeginInvoke. Invoke sinkron dan BeginInvoke asinkron. Operasi ditambahkan ke antrean Dispatcher pada yang ditentukan DispatcherPriority.
Jika BeginInvoke dipanggil pada Dispatcher yang telah dimatikan, properti status yang dikembalikan DispatcherOperation diatur ke Aborted.
Semua metode pada Dispatcher, dengan pengecualian DisableProcessing, adalah utas bebas.
Objek yang berasal dari DispatcherObject memiliki afinitas utas.
Objek yang berasal dari Freezable adalah utas bebas ketika dibekukan. Untuk informasi selengkapnya, lihat Gambaran Umum Objek Freezable.
Properti
| Nama | Deskripsi |
|---|---|
| CurrentDispatcher |
Mendapatkan untuk utas yang Dispatcher saat ini dijalankan dan membuat yang baru Dispatcher jika belum dikaitkan dengan utas. |
| HasShutdownFinished |
Menentukan apakah Dispatcher telah selesai dimatikan. |
| HasShutdownStarted |
Menentukan apakah Dispatcher sedang dimatikan. |
| Hooks |
Mendapatkan kumpulan kait yang memberikan informasi peristiwa tambahan tentang Dispatcher. |
| Thread |
Mendapatkan utas yang terkait dengan ini Dispatcher . |
Metode
| Nama | Deskripsi |
|---|---|
| BeginInvoke(Delegate, DispatcherPriority, Object[]) |
Menjalankan delegasi yang ditentukan secara asinkron dengan argumen yang ditentukan, pada prioritas yang ditentukan, pada utas tempat Dispatcher dibuatnya. |
| BeginInvoke(Delegate, Object[]) |
Menjalankan delegasi yang ditentukan secara asinkron dengan argumen yang ditentukan pada utas tempat Dispatcher pembuatannya. |
| BeginInvoke(DispatcherPriority, Delegate, Object, Object[]) |
Menjalankan delegasi yang ditentukan secara asinkron pada prioritas yang ditentukan dan dengan array argumen yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| BeginInvoke(DispatcherPriority, Delegate, Object) |
Menjalankan delegasi yang ditentukan secara asinkron pada prioritas yang ditentukan dan dengan argumen yang ditentukan pada utas yang Dispatcher terkait dengan. |
| BeginInvoke(DispatcherPriority, Delegate) |
Menjalankan delegasi yang ditentukan secara asinkron pada prioritas yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| BeginInvokeShutdown(DispatcherPriority) |
Memulai pematian Dispatcher secara asinkron. |
| CheckAccess() |
Menentukan apakah utas panggilan adalah utas yang terkait dengan ini Dispatcher. |
| DisableProcessing() |
Menonaktifkan pemrosesan antrean Dispatcher . |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| ExitAllFrames() |
Permintaan agar semua bingkai keluar, termasuk bingkai berlapis. |
| FromThread(Thread) |
Mendapatkan untuk utas Dispatcher yang ditentukan. |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan) |
Menjalankan yang ditentukan Action secara sinkron pada prioritas yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| Invoke(Action, DispatcherPriority, CancellationToken) |
Menjalankan yang ditentukan Action secara sinkron pada prioritas yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| Invoke(Action, DispatcherPriority) |
Menjalankan yang ditentukan Action secara sinkron pada prioritas yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| Invoke(Action) |
Menjalankan yang ditentukan Action secara sinkron pada utas yang Dispatcher terkait dengannya. |
| Invoke(Delegate, DispatcherPriority, Object[]) |
Menjalankan delegasi yang ditentukan pada prioritas yang ditentukan dengan argumen yang ditentukan secara sinkron pada utas yang Dispatcher terkait dengan. |
| Invoke(Delegate, Object[]) |
Menjalankan delegasi yang ditentukan dengan argumen yang ditentukan secara sinkron pada utas yang Dispatcher terkait dengannya. |
| Invoke(Delegate, TimeSpan, DispatcherPriority, Object[]) |
Menjalankan delegasi yang ditentukan dalam rentang waktu yang ditentukan pada prioritas yang ditentukan dengan argumen yang ditentukan secara sinkron pada utas yang Dispatcher terkait dengan. |
| Invoke(Delegate, TimeSpan, Object[]) |
Menjalankan delegasi yang ditentukan dalam rentang waktu yang ditentukan pada prioritas yang ditentukan dengan argumen yang ditentukan secara sinkron pada utas yang Dispatcher terkait dengan. |
| Invoke(DispatcherPriority, Delegate, Object, Object[]) |
Menjalankan delegasi yang ditentukan pada prioritas yang ditentukan dengan argumen yang ditentukan secara sinkron pada utas yang Dispatcher terkait dengan. |
| Invoke(DispatcherPriority, Delegate, Object) |
Menjalankan delegasi yang ditentukan pada prioritas yang ditentukan dengan argumen yang ditentukan secara sinkron pada utas yang Dispatcher terkait dengan. |
| Invoke(DispatcherPriority, Delegate) |
Menjalankan delegasi yang ditentukan secara sinkron pada prioritas yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| Invoke(DispatcherPriority, TimeSpan, Delegate, Object, Object[]) |
Menjalankan delegasi yang ditentukan pada prioritas yang ditentukan dengan argumen yang ditentukan secara sinkron pada utas yang Dispatcher terkait dengan. |
| Invoke(DispatcherPriority, TimeSpan, Delegate, Object) |
Menjalankan delegasi yang ditentukan pada prioritas yang ditentukan dengan argumen yang ditentukan secara sinkron pada utas yang Dispatcher terkait dengan. |
| Invoke(DispatcherPriority, TimeSpan, Delegate) |
Menjalankan delegasi yang ditentukan secara sinkron pada prioritas yang ditentukan dan dengan nilai batas waktu yang ditentukan pada utas yang Dispatcher dibuat. |
| Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken, TimeSpan) |
Menjalankan yang ditentukan Func<TResult> secara sinkron pada prioritas yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken) |
Menjalankan yang ditentukan Func<TResult> secara sinkron pada prioritas yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| Invoke<TResult>(Func<TResult>, DispatcherPriority) |
Menjalankan yang ditentukan Func<TResult> secara sinkron pada prioritas yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| Invoke<TResult>(Func<TResult>) |
Menjalankan yang ditentukan Func<TResult> secara sinkron pada utas yang Dispatcher terkait dengannya. |
| InvokeAsync(Action, DispatcherPriority, CancellationToken) |
Menjalankan asinkron yang ditentukan Action pada prioritas yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| InvokeAsync(Action, DispatcherPriority) |
Menjalankan asinkron yang ditentukan Action pada prioritas yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| InvokeAsync(Action) |
Menjalankan asinkron yang ditentukan Action pada utas yang Dispatcher terkait dengannya. |
| InvokeAsync<TResult>(Func<TResult>, DispatcherPriority, CancellationToken) |
Menjalankan asinkron yang ditentukan Func<TResult> pada prioritas yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| InvokeAsync<TResult>(Func<TResult>, DispatcherPriority) |
Menjalankan asinkron yang ditentukan Func<TResult> pada prioritas yang ditentukan pada utas yang Dispatcher terkait dengannya. |
| InvokeAsync<TResult>(Func<TResult>) |
Menjalankan asinkron yang ditentukan Func<TResult> pada utas yang Dispatcher terkait dengannya. |
| InvokeShutdown() |
Memulai proses Dispatcher matikan secara sinkron. |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| PushFrame(DispatcherFrame) |
Memasukkan perulangan eksekusi. |
| Run() |
Mendorong bingkai eksekusi utama pada antrean Dispatcherperistiwa . |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
| ValidatePriority(DispatcherPriority, String) |
Menentukan apakah yang ditentukan DispatcherPriority adalah prioritas yang valid. |
| VerifyAccess() |
Menentukan apakah utas panggilan memiliki akses ke ini Dispatcher. |
| Yield() |
Membuat objek yang dapat ditunggu yang secara asinkron menghasilkan kontrol kembali ke dispatcher saat ini dan memberikan kesempatan bagi dispatcher untuk memproses peristiwa lain. |
| Yield(DispatcherPriority) |
Membuat objek yang dapat ditunggu yang secara asinkron menghasilkan kontrol kembali ke dispatcher saat ini dan memberikan kesempatan bagi dispatcher untuk memproses peristiwa lain. Pekerjaan yang terjadi ketika kontrol kembali ke kode yang menunggu hasil metode ini dijadwalkan dengan prioritas yang ditentukan. |
Acara
| Nama | Deskripsi |
|---|---|
| ShutdownFinished |
Terjadi ketika selesai Dispatcher dimatikan. |
| ShutdownStarted |
Terjadi ketika Dispatcher mulai dimatikan. |
| UnhandledException |
Terjadi ketika pengecualian utas dilemparkan dan tidak tertangkap selama eksekusi delegasi dengan cara Invoke atau BeginInvoke. |
| UnhandledExceptionFilter |
Terjadi ketika pengecualian utas dilemparkan dan tidak tertangkap selama eksekusi delegasi dengan cara Invoke atau BeginInvoke ketika dalam tahap filter. |
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| BeginInvoke(Dispatcher, Action, DispatcherPriority) |
Menjalankan delegasi yang ditentukan secara asinkron dengan prioritas yang ditentukan pada utas tempat yang ditentukan Dispatcher dibuat. |
| BeginInvoke(Dispatcher, Action) |
Menjalankan delegasi yang ditentukan secara asinkron dengan prioritas normal pada utas tempat yang ditentukan Dispatcher dibuat. |
| Invoke(Dispatcher, Action, DispatcherPriority) |
Menjalankan delegasi yang ditentukan secara sinkron dengan prioritas yang ditentukan pada utas tempat yang ditentukan Dispatcher dibuat. |
| Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority) |
Menjalankan delegasi yang ditentukan secara sinkron dengan prioritas yang ditentukan pada utas tempat yang ditentukan Dispatcher dibuat, dan menghentikan eksekusi setelah periode waktu habis yang ditentukan. |
| Invoke(Dispatcher, Action, TimeSpan) |
Menjalankan delegasi yang ditentukan secara sinkron pada utas tempat yang ditentukan Dispatcher dibuat, dan menghentikan eksekusi setelah periode waktu habis yang ditentukan. |
| Invoke(Dispatcher, Action) |
Menjalankan delegasi yang ditentukan secara sinkron dengan prioritas normal pada utas tempat yang ditentukan Dispatcher dibuat. |