#c_sharp #net #vbnet #async_await
Хочу использовать Task как промис. Т. е. вызываемая функция создаёт некий Task, а вызывающая применяет к нему await. Тот таск ничего не делает и просто ждёт, пока кто-то ещё его заресолвит. Примерно как с костылём в следующем коде: Imports System.Threading Public Class Form1 Private Async Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Text = "Click the button to continue" Await ClikTheButton() Me.Text = "Thanks for clicking" End Sub Private Function ClikTheButton() As Task Dim Sem As New SemaphoreSlim(0, 1) Dim Handler As EventHandler = Sub(sender As Object, e As EventArgs) Sem.Release() RemoveHandler Button1.Click, Handler End Sub AddHandler Button1.Click, Handler Return Sem.WaitAsync() End Function End Class
Ответы
Ответ 1
Надо использовать TaskCompletionSource: Task ClickTheButton(CancellationToken token) { var tcs = new TaskCompletionSource
Комментариев нет:
Отправить комментарий