扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
[C#] [WebMethod] public IAsyncResult BeginGetAuthorRoyalties(String Author, AsyncCallback callback, object asyncState) [Visual Basic] <WebMethod()> _ Public Function BeginGetAuthorRoyalties(ByVal Author As String, _ ByVal callback As AsyncCallback, ByVal asyncState As Object) _ As IAsyncResult |
[C#] [WebMethod] public AuthorRoyalties EndGetAuthorRoyalties(IAsyncResult asyncResult) [Visual Basic] <WebMethod()> _ Public Function EndGetAuthorRoyalties(ByVal asyncResult As _ IAsyncResult) As AuthorRoyalties |
[C#] using System; using System.Web.Services; [WebService(Namespace="http://www.contoso.com/")] public class MyService : WebService { public RemoteService remoteService; public MyService() { // Create a new instance of proxy class for // the XML Web service to be called. remoteService = new RemoteService(); } // Define the Begin method. [WebMethod] public IAsyncResult BeginGetAuthorRoyalties(String Author,AsyncCallback callback, object asyncState) { // Begin asynchronous communictation with a different XML Web // service. return remoteService.BeginReturnedStronglyTypedDS(Author, callback,asyncState); } // Define the End method. [WebMethod] public AuthorRoyalties EndGetAuthorRoyalties(IAsyncResultasyncResult) { // Return the asynchronous result from the other XML Web service. return remoteService.EndReturnedStronglyTypedDS(asyncResult); } } [Visual Basic] Imports System.Web.Services <WebService(Namespace:="http://www.contoso.com/")> _ Public Class MyService Inherits WebService Public remoteService As RemoteService Public Sub New() MyBase.New() ' Create a new instance of proxy class for ' the XML Web service to be called. remoteService = New RemoteService() End Sub ' Define the Begin method. <WebMethod()> _ Public Function BeginGetAuthorRoyalties(ByVal Author As String, _ ByVal callback As AsyncCallback, ByVal asyncState As Object) _ As IAsyncResult ' Begin asynchronous communictation with a different XML Web ' service. Return remoteService.BeginReturnedStronglyTypedDS(Author, _ callback, asyncState) End Function ' Define the End method. <WebMethod()> _ Public Function EndGetAuthorRoyalties(ByVal asyncResult As _ IAsyncResult) As AuthorRoyalties ' Return the asynchronous result from the other XML Web service. Return remoteService.EndReturnedStronglyTypedDS(asyncResult) End Function End Class |
[C#] using System.Web.Services; using System.Data; using System; // This imports the proxy class for the XML Web services // that the sample communicates with. using AsyncWS.localhost; namespace AsyncWS { [WebService(Namespace="http://www.contoso.com/")] public class MyService : System.Web.Services.WebService { public RemoteService remoteService; public MyService() { remo teService = new RemoteService(); } [WebMethod] public IAsyncResult BeginGetAuthorRoyalties(String Author, AsyncCallback callback, Object asyncState) { // Saves the current state for the call that gets the author's // royalties. AsyncStateChain state = new AsyncStateChain(); state.originalState = asyncState; state.Author = Author; state.originalCallback = callback; // Creates an intermediary callback. AsyncCallback chainedCallback = new AsyncCallback(AuthorRoyaltiesCallback); return remoteService.BeginGetAuthors(chainedCallback,state); } // Intermediate method to handle chaining the // asynchronous calls. public void AuthorRoyaltiesCallback(IAsyncResult ar) { AsyncStateChain state = (AsyncStateChain)ar.AsyncState; RemoteService rs = new RemoteService(); // Gets the result from the call to GetAuthors. Authors allAuthors = rs.EndGetAuthors(ar); Boolean found = false; // Verifies that the requested author is valid. int i = 0; DataRow row; while (i < allAuthors.authors.Rows.Count && !found) { row = allAuthors.authors.Rows[i]; if (row["au_lname"].ToString() == state.Author) { found = true; } i++; } if (found) { AsyncCallback cb = state.originalCallback; // Calls the second XML Web service, because the author is // valid. rs.BeginReturnedStronglyTypedDS(state.Author,cb,state); } else { // Cannot throw the exception in this function or the XML Web // service will hang. So, set the state argument to the // exception and let the End method of the chained XML Web // service check for it. ArgumentException ex = new ArgumentException( "Author does not exist.","Author"); AsyncCallback cb = state.originalCallback; // Call the second XML Web service, setting the state to an // exception. rs.BeginReturnedStronglyTypedDS(state.Author,cb,ex); } } [WebMethod] public AuthorRoyalties EndGetAuthorRoyalties(IAsyncResult asyncResult) { // Check whehter the first XML Web service threw an exception. if (asyncResult.AsyncState is ArgumentException) throw (ArgumentException) asyncResult.AsyncState; else return remoteService.EndReturnedStronglyTypedDS(asyncResult); } } // Class to wrap the callback and state for the intermediate // asynchronous operation. public class AsyncStateChain { public AsyncCallback originalCallback; public Object originalState; public String Author; } } [Visual Basic] Imports System.Web.Services Imports System.Data Imports System ' This imports the proxy class for the XML Web services ' that the sample communicates with. Imports AsyncWS_VB.localhost Namespace AsyncWs <WebService(Namespace:="http://www.contoso.com/")> _ Public Class MyService Inherits WebService Public remoteService As remoteService Public Sub New() MyBase.New() remoteService = New localhost.RemoteService() End Sub ' Defines the Begin method. <WebMethod()> _ Public Function BeginGetAuthorRoyalties(ByVal Author As String, _ ByVal callback As AsyncCallback, ByVal asyncState As Object) _ As IAsyncResult ' Saves the current state for the call that gets the author's ' royalties. Dim state As AsyncStateChain = New AsyncStateChain() state.originalState = asyncState state.Author = Author state.originalCallback = callback ' Creates an intermediary callback. Dim chainedCallback As AsyncCallback = New AsyncCallback( _ AddressOf AuthorRoyaltiesCallback) ' Begin asynchronous communictation with a different XML Web ' service. Return remoteService.BeginGetAuthors(chainedCallback, state) End Function ' Intermediate method to handle chaining the asynchronous calls. Public Sub AuthorRoyaltiesCallback(ByVal ar As IAsyncResult) Dim state As AsyncStateChain = CType(ar.AsyncState, _ AsyncStateChain) Dim rs As RemoteService = New RemoteService() ' Gets the result from the call to GetAuthors. Dim allAuthors As Authors = rs.EndGetAuthors(ar) Dim found As Boolean = False ' Verifies that the requested author is valid. Dim i As Integer = 0 Dim row As DataRow While (i < allAuthors.authors.Rows.Count And (Not found)) row = allAuthors.authors.Rows(i) If (row("au_lname").ToString() = state.Author) Then found = True End If i = i + 1 End While If (found) Then Dim cb As AsyncCallback = state.originalCallback ' Calls the second XML Web service, because the author is ' valid. rs.BeginReturnedStronglyTypedDS(state.Author, cb, state) Else ' Cannot throw the exception in this function or the XML Web ' service will hang. So, set the state argument to the ' exception and let the End method of the chained XML Web ' service check for it. Dim ex As ArgumentException = New ArgumentException( "Author does not exist.", "Author") Dim cb As AsyncCallback = state.originalCallback ' Call the second XML Web service, setting the state to an ' exception. rs.BeginReturnedStronglyTypedDS(state.Author, cb, ex) End If End Sub ' Define the End method. <WebMethod()> _ Public Function EndGetAuthorRoyalties(ByVal asyncResult As _ IAsyncResult) As localhost.AuthorRoyalties ' Return the asynchronous result from the other XML Web service. Return remoteService.EndReturnedStronglyTypedDS(asyncResult) End Function End Class ' Class to wrap the callback and state for the intermediate asynchronous ' operation. Public Class AsyncStateChain Public originalCallback As AsyncCallback Public originalState As Object Public Author As String End Class End Namespace |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者