1 -- From this service contract ... ----------------------------------------------
12 -- A client like this is created (interface types too, which are simple) -------
16 public class FooClient : ClientBase<IFoo>, IFoo {
20 public .ctor(Binding,EndpointAddress)
21 public .ctor(string,EndpointAddress)
22 public .ctor(string,string)
23 public void BarOperAsync(...)
24 public void BarOperAsync(..., object userState)
26 if (onBeginBarOperDelegate == null)
27 onBeginBarOperDelegate = new BeginOperationDelegate (OnBeginBarOper)
28 if (onEndBarOperDelegate == null)
29 onEndBarOperDelegate = new EndOperationDelegate (OnEndBarOper)
30 if (onBarOperCompletedDelegate == null)
31 onBarOperCompletedDelegate = new SendOrPostCallback (OnBarOperCompleted);
32 InvokeAsync (onBeginBarOperDelegate, new object [] {arg1, arg2, ...}, onEndBarOperDelegate, onBarOperCompletedDelegate, userState);
34 protected IFoo CreateChannel() [ml]
35 IAsyncResult IFoo.BeginBarOper(..., AsyncCallback, object)
37 return base.BeginInvoke ("BarOper", new object [] {arg1, arg2, ...}, callback, state);
39 BazType IFoo.EndBarOper(IAsyncResult , out ...)
41 object [] ret = EndInvoke ("BarOper", result);
42 /*optionally*/ outArg1 = ret [1]; outArg2 = ret [2] ...
43 return (BazType) ret [0];
45 private void OnBarOperCompleted(object state)
47 if (BarOperCompleted != null) {
48 var args = (InvokeAsyncCompletedEventArgs) state;
49 BarOperCompleted (new BarOperCompletedEventArgs (args.Results, args.Error, args.Cancelled, args.UserState));
52 private IAsyncResult OnBeginBarOper(object [] inValues, AsyncCallback, object)
54 var arg1 = inValues [0]; var arg2 = inValues [1]; ...
55 return BeginBarOper (arg1, arg2, ..., callback, state);
57 private object [] OnEndBarOper(IAsyncResult)
62 var ret = EndBarOper (result, out outarg1, out outarg2, ...);
63 return new object [] {ret, outarg1, outarg2...};
65 public event EventHandler<BarOperCompletedEventArgs> BarOperCompleted
66 private SendOrPostCallback onBarOperCompletedDelegate
67 private ClientBase<IFoo>.BeginOperationDelegate onBeginBarOperDelegate
68 private ClientBase<IFoo>.EndOperationDelegate onEndBarOperDelegate
70 public class BarOperCompletedEventArgs : AsyncCompletedEventArgs
72 public BarOperCompletedEventArgs (object [] results, Exception ex, bool cancelled, object userState)
74 this.results = results;
77 public BazType Result { get { (BazType) results [0]; } }