私は何日も読んでいますが、ここで何をすべきかよくわかりません。私は実際には C# 開発者であり、VB.NET でのプログラミングは少し混乱することがあります。それはさておき、ここで作成している新しいプロジェクトで WCF からの非同期呼び出しを実装しようとしています。私はいくつかの異なる方法で結果を試しましたが、私がやっていることは適切であることを確認したいと思います.
私が読んだことから、非同期メソッドで決して void を返すべきではないので、それを避けるために最善を尽くしています。それはさておき、これがこのページを作成するための有効な方法であるかどうかを知りたいだけだと思います. ビルドすると、WCF から複数のメソッドが呼び出されます。
Public Class _DefaultReservation
Inherits System.Web.UI.Page
Dim wcfReservation As WCFReservation.WDReservationClient
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
SetupPage()
End Sub
Private Async Sub SetupPage()
wcfReservation = DirectCast(Master, LoggedInMaster).wcfReservation
Dim resData As String = Await wcfReservation.GetDataAsync(123)
Response.Write(resData)
End Sub
End Class
紛らわしいのは、そのコードを非同期関数内に配置してタスクを返す場合、page_load ハンドラーも非同期としてマークする必要があることです。このようにするのは正しくないようですか?そうすることで、非同期関数が非同期関数を呼び出しているように見えます。しかし、私がここでやっている方法では、私の非同期関数は void を返します。これは避けるべきです。必要に応じて、他の方法の例も投稿できます。ありがとうございました!!
編集:これはうまくいきますか?
Imports System.Threading.Tasks
Public Class _DefaultReservation Inherits System.Web.UI.Page
Dim wcfReservation As WCFReservation.WDReservationClient
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
SetupPage()
End Sub
Private Async Sub SetupPage()
wcfReservation = DirectCast(Master, LoggedInMaster).wcfReservation
Dim getDataResult = Await GetDataAsync()
Response.Write(getDataResult)
End Sub
Private Function GetDataAsync() As Task(Of String)
Return wcfReservation.GetDataAsync(123)
End Function
クラス終了
編集3:
Imports System.Threading.Tasks
Public Class _DefaultReservation Inherits System.Web.UI.Page
Dim wcfReservation As WCFReservation.WDReservationClient
Protected Async Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
wcfReservation = DirectCast(Master, LoggedInMaster).wcfReservation
Dim result As String = Await wcfReservation.GetDataAsync(1234)
Response.Write(result)
End Sub
クラス終了