Control.InvokeAsync Metode

Definisi

Overload

Nama Deskripsi
InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken)

Menjalankan panggilan balik asinkron yang ditentukan pada utas yang memiliki handel kontrol secara asinkron.

InvokeAsync(Action, CancellationToken)

Memanggil panggilan balik sinkron yang ditentukan secara asinkron pada utas yang memiliki handel kontrol.

InvokeAsync<T>(Func<T>, CancellationToken)

Memanggil panggilan balik sinkron yang ditentukan secara asinkron pada utas yang memiliki handel kontrol.

InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken)

Menjalankan panggilan balik asinkron yang ditentukan pada utas yang memiliki handel kontrol.

InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken)

Sumber:
Control.cs
Sumber:
Control.cs
Sumber:
Control.cs

Menjalankan panggilan balik asinkron yang ditentukan pada utas yang memiliki handel kontrol secara asinkron.

public System.Threading.Tasks.Task InvokeAsync(Func<System.Threading.CancellationToken,System.Threading.Tasks.ValueTask> callback, System.Threading.CancellationToken cancellationToken = default);
member this.InvokeAsync : Func<System.Threading.CancellationToken, System.Threading.Tasks.ValueTask> * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Function InvokeAsync (callback As Func(Of CancellationToken, ValueTask), Optional cancellationToken As CancellationToken = Nothing) As Task

Parameter

callback
Func<CancellationToken,ValueTask>

Fungsi asinkron untuk dijalankan, yang mengambil CancellationToken dan mengembalikan ValueTask.

cancellationToken
CancellationToken

Token pembatalan.

Mengembalikan

Tugas yang mewakili operasi pemanggilan asinkron.

Pengecualian

Handel kontrol belum dibuat.

Keterangan

Panggilan balik akan dinaikkan ke utas yang memiliki handel kontrol, dan kemudian ditunggu. Pengecualian akan disebarluaskan kembali ke pemanggil. Perhatikan juga bahwa tugas yang dikembalikan bukan tugas yang terkait dengan panggilan balik, tetapi tugas yang mewakili operasi marshalling panggilan balik ke utas UI. Jika Anda perlu meneruskan panggilan balik yang Task mengembalikan daripada ValueTask, gunakan ValueTask(Task)konstruktor 's untuk membuat baru ValueTask yang membungkus Tugas asli. keduanya CancellationToken akan diperhitungkan ketika marshalling panggilan balik ke utas yang memiliki handel kontrol, dan ketika menjalankan panggilan balik.

Jika Anda ingin menjalankan panggilan balik sinkron secara asinkron, gunakan kelebihan beban InvokeAsync<T>(Func<T>, CancellationToken) atau kelebihan beban InvokeAsync(Action, CancellationToken).

Berlaku untuk

InvokeAsync(Action, CancellationToken)

Sumber:
Control.cs
Sumber:
Control.cs
Sumber:
Control.cs

Memanggil panggilan balik sinkron yang ditentukan secara asinkron pada utas yang memiliki handel kontrol.

public System.Threading.Tasks.Task InvokeAsync(Action callback, System.Threading.CancellationToken cancellationToken = default);
member this.InvokeAsync : Action * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Function InvokeAsync (callback As Action, Optional cancellationToken As CancellationToken = Nothing) As Task

Parameter

callback
Action

Tindakan sinkron untuk dijalankan.

cancellationToken
CancellationToken

Token pembatalan.

Mengembalikan

Tugas yang mewakili operasi pemanggilan asinkron.

Keterangan

Ketika Anda meneruskan CancellationToken ke metode ini, metode akan kembali, tetapi panggilan balik masih akan dijalankan. Panggilan balik akan berjalan pada utas UI dan juga akan memblokir utas UI. InvokeAsync dalam hal ini hanya mengantrekan panggilan balik ke akhir antrean pesan dan segera kembali, tetapi segera setelah panggilan balik dijalankan, ia masih akan memblokir utas UI untuk saat berjalan. Untuk alasan ini, disarankan untuk hanya menjalankan operasi yang berjalan singkat dalam panggilan balik, seperti memperbarui properti kontrol atau yang serupa.

Jika Anda ingin menjalankan operasi yang berjalan lama, pertimbangkan untuk menggunakan panggilan balik asinkron sebagai gantinya, dengan memastikan bahwa Anda menggunakan kelebihan beban InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) atau InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken).

Berlaku untuk

InvokeAsync<T>(Func<T>, CancellationToken)

Sumber:
Control.cs
Sumber:
Control.cs
Sumber:
Control.cs

Memanggil panggilan balik sinkron yang ditentukan secara asinkron pada utas yang memiliki handel kontrol.

public System.Threading.Tasks.Task<T> InvokeAsync<T>(Func<T> callback, System.Threading.CancellationToken cancellationToken = default);
member this.InvokeAsync : Func<'T> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'T>
Public Function InvokeAsync(Of T) (callback As Func(Of T), Optional cancellationToken As CancellationToken = Nothing) As Task(Of T)

Jenis parameter

T

Jenis pengembalian panggilan balik sinkron.

Parameter

callback
Func<T>

Fungsi sinkron untuk dijalankan.

cancellationToken
CancellationToken

Token pembatalan.

Mengembalikan

Task<T>

Tugas yang mewakili operasi dan berisi hasil fungsi.

Keterangan

Ketika Anda meneruskan CancellationToken ke metode ini, metode akan kembali, tetapi panggilan balik masih akan dijalankan. Panggilan balik akan berjalan pada utas UI dan juga akan memblokir utas UI. InvokeAsync dalam hal ini hanya mengantrekan panggilan balik ke akhir antrean pesan dan segera kembali, tetapi segera setelah panggilan balik dijalankan, panggilan balik masih akan memblokir UI untuk saat berjalan. Untuk alasan ini, disarankan untuk hanya menjalankan operasi yang berjalan singkat dalam panggilan balik, seperti memperbarui properti kontrol atau yang serupa.

Jika Anda ingin menjalankan operasi jangka panjang, pertimbangkan untuk menggunakan panggilan balik asinkron sebagai gantinya, yang Anda gunakan dengan kelebihan beban yang InvokeAsync dijelaskan di bawah ini.

Penting: Perhatikan juga bahwa jika Anda menggunakan kelebihan beban ini untuk meneruskan panggilan balik yang mengembalikan Task bahwa Tugas ini TIDAK akan ditunggu tetapi segera kembali dan memiliki karakteristik "engage-and-forget". Jika Anda ingin tugas yang Anda lewati ditunggu, pastikan Anda menggunakan kelebihan beban InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) atau InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken).

Berlaku untuk

InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken)

Sumber:
Control.cs
Sumber:
Control.cs
Sumber:
Control.cs

Menjalankan panggilan balik asinkron yang ditentukan pada utas yang memiliki handel kontrol.

public System.Threading.Tasks.Task<T> InvokeAsync<T>(Func<System.Threading.CancellationToken,System.Threading.Tasks.ValueTask<T>> callback, System.Threading.CancellationToken cancellationToken = default);
member this.InvokeAsync : Func<System.Threading.CancellationToken, System.Threading.Tasks.ValueTask<'T>> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'T>
Public Function InvokeAsync(Of T) (callback As Func(Of CancellationToken, ValueTask(Of T)), Optional cancellationToken As CancellationToken = Nothing) As Task(Of T)

Jenis parameter

T

Jenis pengembalian panggilan balik asinkron.

Parameter

callback
Func<CancellationToken,ValueTask<T>>

Fungsi asinkron untuk dijalankan, yang mengambil CancellationToken dan mengembalikan ValueTask<TResult>.

cancellationToken
CancellationToken

Token pembatalan.

Mengembalikan

Task<T>

Tugas yang mewakili operasi dan berisi hasil fungsi dari jenis T.

Pengecualian

Handel kontrol belum dibuat.

Keterangan

Panggilan balik akan dinaikkan ke utas yang memiliki handel kontrol, dan kemudian ditunggu. Pengecualian akan disebarluaskan kembali ke pemanggil. Perhatikan juga bahwa tugas yang dikembalikan bukan tugas yang terkait dengan panggilan balik, tetapi tugas yang mewakili operasi marshalling panggilan balik ke utas UI. Jika Anda perlu meneruskan panggilan balik yang Task<TResult> mengembalikan daripada ValueTask<TResult>, gunakan ValueTask<TResult>(Task<TResult>)konstruktor 's untuk membuat baru ValueTask<TResult> yang membungkus Tugas asli. keduanya CancellationToken akan diperhitungkan ketika marshalling panggilan balik ke utas yang memiliki handel kontrol, dan ketika menjalankan panggilan balik.

Jika Anda ingin menjalankan panggilan balik sinkron secara asinkron, gunakan kelebihan beban InvokeAsync<T>(Func<T>, CancellationToken) atau kelebihan beban InvokeAsync(Action, CancellationToken).

Berlaku untuk