I found a workaround.  It does seem to be because of a call on the UI
thread.  So what I'm doing now is:

public void CallMethodResultCallbackProxy(IAsyncResult ar)
{
   this.Invoke(new AsyncCallback(this.CallMethodResultCallback) new object[]
{ ar });
}

And this works.  But its gross.

So somehow "Invoke" knows how to call the object on the UI thread.  There
has to be a way I can tell the original call to the service to do this.

-John


> -----Original Message-----
> From: The DOTNET list will be retired 7/1/02
> [mailto:[EMAIL PROTECTED]]On Behalf Of John Burkhardt
> Sent: Wednesday, June 12, 2002 4:42 PM
> To: [EMAIL PROTECTED]
> Subject: [DOTNET] Calling Web Services using AsyncCallback
>
>
> I'm trying to do this for the first time.  While I can't send the exact
> code, here is in essence what I'm doing:
>
> public void CallMyService()
> {
>   MyService service = new MyService();
>   service.BeginCallMethod(
>         new AsyncCallback(this.CallMethodResultCallback),
>       service
>    );
> }
>
> public void CallMethodResultCallback(IAsyncResult ar)
> {
>    MyService service = (MyService)ar.AsyncState;
>    string result = service.EndCallMethod(ar);
>    ...
> }
>
> So the callback happens, and if I set a break point, I can get the result.
> But sometime soon afterward I get a "System.IO.IOException" with the
> following message:
> "Unable to read data from the transport connection"
>
> Call stack says I'm in System.Net.Connection::ReadCallback()
>
> This does seem to happen when I try to put the string in a UI control.  Is
> this not allowed?  Is there a way to create the AsyncCallback such that it
> will be called on the UI thread?
>
> Thanks for any help!
>
> -John
>
> You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
> subscribe to other DevelopMentor lists at http://discuss.develop.com.

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to