Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Değiştirici, Async değiştirildiği yöntemin veya lambda ifadesinin zaman uyumsuz olduğunu gösterir. Bu tür yöntemler zaman uyumsuz yöntemler olarak adlandırılır.
Zaman uyumsuz yöntem, çağıranın iş parçacığını engellemeden uzun süre çalışma olasılığı olan işleri yapmak için kullanışlı bir yol sağlar. Zaman uyumsuz yöntemi çağıran, zaman uyumsuz yöntemin bitmeden çalışmasını sürdürebilir.
Uyarı
Async ve Await anahtar sözcükleri Visual Studio 2012'de kullanıma sunulmuştur. Zaman uyumsuz programlamaya giriş için bkz. Async ve Await ile Zaman Uyumsuz Programlama.
Aşağıdaki örnekte zaman uyumsuz bir yöntemin yapısı gösterilmektedir. Kural gereği, zaman uyumsuz yöntem adları "Async" ile biter.
Public Async Function ExampleMethodAsync() As Task(Of Integer)
' . . .
' At the Await expression, execution in this method is suspended and,
' if AwaitedProcessAsync has not already finished, control returns
' to the caller of ExampleMethodAsync. When the awaited task is
' completed, this method resumes execution.
Dim exampleInt As Integer = Await AwaitedProcessAsync()
' . . .
' The return statement completes the task. Any method that is
' awaiting ExampleMethodAsync can now get the integer result.
Return exampleInt
End Function
Genellikle, anahtar sözcüğü tarafından Async değiştirilen bir yöntem en az bir Await ifadesi veya deyimi içerir. yöntemi, ilk Awaitöğesine ulaşana kadar zaman uyumlu bir şekilde çalışır ve bu noktada beklenen görev tamamlanana kadar askıya alır. Bu arada, denetim yöntemini çağırana döndürülür. Yöntem bir Await ifade veya deyim içermiyorsa, yöntem askıya alınmaz ve zaman uyumlu bir yöntem olarak yürütülür. Derleyici uyarısı, bu durum bir hataya işaret ettiğinden, içermeyen Await zaman uyumsuz yöntemler konusunda sizi uyarır. Daha fazla bilgi için derleyici hatasına bakın.
Anahtar Async sözcük, kaydedilmemiş bir anahtar sözcüktür. Bir yöntemi veya lambda ifadesini değiştirdiğinde bir anahtar sözcüktür. Diğer tüm bağlamlarda tanımlayıcı olarak yorumlanır.
Dönüş Türleri
Zaman uyumsuz yöntem bir Alt yordam veya veya dönüş türüne sahip bir İşlev yordamıdır TaskTask<TResult>. yöntemi herhangi bir ByRef parametresi bildiremez.
Yöntemin Return deyimi TResult türünde bir işlenene sahipse, zaman uyumsuz bir yöntemin dönüş türünü belirtirsinizTask(Of TResult). Yöntem tamamlandığında anlamlı bir değer döndürülmezse kullanırsınız Task . Yani, yöntemine yapılan bir çağrı bir Taskdöndürür, ancak Task tamamlandığında öğesini bekleyen Task herhangi Await bir deyim sonuç değeri üretmez.
Zaman uyumsuz alt yordamlar öncelikle bir Sub yordamın gerekli olduğu olay işleyicilerini tanımlamak için kullanılır. Zaman uyumsuz bir alt yordam çağıranı bunu bekleyemiyor ve yöntemin attığı özel durumları yakalayamıyor.
Daha fazla bilgi ve örnek için bkz . Zaman Uyumsuz Dönüş Türleri.
Örnek
Aşağıdaki örneklerde zaman uyumsuz olay işleyicisi, zaman uyumsuz lambda ifadesi ve zaman uyumsuz bir yöntem gösterilmektedir. Bu öğelerin kullanıldığı tam bir örnek için bkz . İzlenecek Yol: Async ve Await Kullanarak Web'e Erişme. Örneği .NET Örnek Tarayıcısı'ndan indirebilirsiniz. Örnek kod SerialAsyncExample projesindedir.
' An event handler must be a Sub procedure.
Async Sub button1_Click(sender As Object, e As RoutedEventArgs) Handles button1.Click
textBox1.Clear()
' SumPageSizesAsync is a method that returns a Task.
Await SumPageSizesAsync()
textBox1.Text = vbCrLf & "Control returned to button1_Click."
End Sub
' The following async lambda expression creates an equivalent anonymous
' event handler.
AddHandler button1.Click, Async Sub(sender, e)
textBox1.Clear()
' SumPageSizesAsync is a method that returns a Task.
Await SumPageSizesAsync()
textBox1.Text = vbCrLf & "Control returned to button1_Click."
End Sub
' The following async method returns a Task(Of T).
' A typical call awaits the Byte array result:
' Dim result As Byte() = Await GetURLContents("https://msdn.com")
Private Async Function GetURLContentsAsync(url As String) As Task(Of Byte())
' The downloaded resource ends up in the variable named content.
Dim content = New MemoryStream()
' Initialize an HttpWebRequest for the current URL.
Dim webReq = CType(WebRequest.Create(url), HttpWebRequest)
' Send the request to the Internet resource and wait for
' the response.
Using response As WebResponse = Await webReq.GetResponseAsync()
' Get the data stream that is associated with the specified URL.
Using responseStream As Stream = response.GetResponseStream()
' Read the bytes in responseStream and copy them to content.
' CopyToAsync returns a Task, not a Task<T>.
Await responseStream.CopyToAsync(content)
End Using
End Using
' Return the result as a byte array.
Return content.ToArray()
End Function