#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
Комментариев нет:
Отправить комментарий