WebService and timeout

S

shark

Hi.

I'm dealing with scenario when call to any web method ends up with timeout
and I try to add the user a chance to retry (wait a little bit)
My service proxy code looks like this:

AsyncCallback cb = new AsyncCallback(ServiceCallback);
IAsyncResult result1 = BeginInvoke(methodName, parameters, cb, this);
if(result1.IsCompleted == false)
{
while(true)
{
bTO = result1.AsyncWaitHandle.WaitOne(Timeout, true);
if(bTO == false)//time out occured
{
//display window and ask the user to wait a moment, user press
OK when it sure that web method finished
}
if(result1.IsCompleted)
break;
}
object[] ret = EndInvoke(result1);// error every time when time out
occured (bTO = false)
}
My scenario is following:
1. BeginInvoke initialize asynch web method call
2. WaitOne waits for Timeout miliseconds
3. WaitOne returns false because timeout occured, and wait screen is
displayed. When user close it the web methos is finished.
4. result1.IsCompleted is true so I expect that EndInvoke shall return the
results but it throws excpetion "timeout" !!!. Why?
Everything works fine if timeout doesn't occure.

Thanks for any advise
Shark
 
P

Peter Bromberg [C# MVP]

Have you tried calling this synchronously? If it is going to time out and
you need to get your results before you can go any further, calling it
asynchronously isn't going to help any.
Peter
 
S

shark

Yes, synchronously it works fine, but I try to get the user a possibility to
wait longer than 'timeout'.
My scenario shall looks:
1. Init asynchronously call
2. Wait for results
3. If timeout goto 2 else if IsCompleted goto 3
4. Call EndInvoke to get the results.

It seems that calling EndInvoke in case earlier timeout occured ends up with
TimeOut exception. Why?

Thx




Peter Bromberg said:
Have you tried calling this synchronously? If it is going to time out and
you need to get your results before you can go any further, calling it
asynchronously isn't going to help any.
Peter
shark said:
Hi.

I'm dealing with scenario when call to any web method ends up with
timeout and I try to add the user a chance to retry (wait a little bit)
My service proxy code looks like this:

AsyncCallback cb = new AsyncCallback(ServiceCallback);
IAsyncResult result1 = BeginInvoke(methodName, parameters, cb, this);
if(result1.IsCompleted == false)
{
while(true)
{
bTO = result1.AsyncWaitHandle.WaitOne(Timeout, true);
if(bTO == false)//time out occured
{
//display window and ask the user to wait a moment, user press
OK when it sure that web method finished
}
if(result1.IsCompleted)
break;
}
object[] ret = EndInvoke(result1);// error every time when time out
occured (bTO = false)
}
My scenario is following:
1. BeginInvoke initialize asynch web method call
2. WaitOne waits for Timeout miliseconds
3. WaitOne returns false because timeout occured, and wait screen is
displayed. When user close it the web methos is finished.
4. result1.IsCompleted is true so I expect that EndInvoke shall return
the results but it throws excpetion "timeout" !!!. Why?
Everything works fine if timeout doesn't occure.

Thanks for any advise
Shark
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top