void MainPageLoaded(object sender, RoutedEventArgs e) { // Simple Version var basicHttpBinding = new BasicHttpBinding(); var endpointAddress = new EndpointAddress("http://localhost:50738/UserGroupEvent.svc"); var userGroupEventService = new ChannelFactory<IAsyncUserGroupEventService>(basicHttpBinding, endpointAddress).CreateChannel(); AsyncCallback asyncCallBack = delegate(IAsyncResult result) { var response = ((IAsyncUserGroupEventService)result.AsyncState).EndGetUserGroupEvent(result); Dispatcher.BeginInvoke(() => SetUserGroupEventData(response)); }; userGroupEventService.BeginGetUserGroupEvent("123", asyncCallBack, userGroupEventService); // Deluxe Variante mit eigenem Proxy var channel = new UserGroupEventServiceProxy("BasicHttpBinding_IAsyncUserGroupEventService").Channel; channel.BeginGetUserGroupEvent("123", ProcessResult, channel); // Variante mit Faulthandler using (var scope = new OperationContextScope((IContextChannel)channel)) { var messageHeadersElement = OperationContext.Current.OutgoingMessageHeaders; messageHeadersElement.Add(MessageHeader.CreateHeader("DoesNotHandleFault", "", true)); channel.BeginGetUserGroupEventWithFault("123", ProcessResultWithFault, channel); } }
private void ProcessResult(IAsyncResult asyncResult) { var proxy = new UserGroupEventServiceProxy("BasicHttpBinding_IAsyncUserGroupEventService"); var response = proxy.Result(asyncResult).EndGetUserGroupEvent(asyncResult); Dispatcher.BeginInvoke(() => SetUserGroupEventData(response)); proxy.Close(); }
private void ProcessResultWithFault(IAsyncResult asyncResult) { var proxy = new UserGroupEventServiceProxy("BasicHttpBinding_IAsyncUserGroupEventService"); var response = proxy.Result(asyncResult).EndGetUserGroupEventWithFault(asyncResult); if (response.FaultDetail == null) { Dispatcher.BeginInvoke(() => SetUserGroupEventData(response)); } else { // Handle the error // Log.WarnFormat("ProcessResultWithFault() {0}", response.FaultDetail.Message); } proxy.Close(); }