Async operations, strange behavior.

Hello,

Not sure this is the right forum, but...

Need some help here. We have a client/server windows app that is acting strange ever since we upgraded to 2.0 framework.

We use async calls for all database operations. Some folks are getting the following error

"Endinvoke can only be called once from an async operation".

Some users get the error, some users don't, some times the user that

gets the error will at times not have a problem, very strange.

Here is a sample of our code:

ProcessServer pas = new ProcessServer();

AsyncCallback RemoteCallback = new AsyncCallback(this.ValidateInspectorCallback);

//call to server

ValidateInspectorDelegate del = new ValidateInspectorDelegate(pas.ValidateInspector);

IAsyncResult ar = del.BeginInvoke( mdiform.UserValidateData, process, netid, pass, workprocessid, RemoteCallback, null);

//callback method

private void ValidateInspectorCallback(IAsyncResult ar)

{

try

{

ValidateInspectorDelegate del = (ValidateInspectorDelegate)((AsyncResult)ar).AsyncDelegate;

Dataset xdlogds = del.EndInvoke(ar);

NoParmDelegate ed = new NoParmDelegate( this.ValidateInspectorReceipt);

this.Invoke(ed);

ValidateInspectorReceipt();

}

catch (ApcsException ae)

{

CallBackMessage( ae.Text, false);

}

catch (Exception e)

{

CallBackMessage( e.Message, true);

}


}

//the validateinspectorreciept method returns us to main thread

//callbackmessage function

protected void CallBackMessage( string message, bool showstaff)

{

CallBackMessageDelegate ed = new CallBackMessageDelegate( this.ShowCallBackMessage);

this.Invoke(ed, new Object[]{message, showstaff});

return;

}

protected void ShowCallBackMessage( string message, bool showstaff)

{

if (showstaff)

em.ShowStaffErrorBox(message);

else

em.ShowErrorBox(message);

return;

}

What is happening is that the callback function call is in a loop, it

keeps getting called for about 5 0r 6 times and then proceeds

normally. Don't know why the callback function is getting called

again. I was thinking it had something to do with the invoke method in

the callback, so I took that out and just called the function

validateinspectorreciept method directly and not through delegate.

This worked, but I'm thinking that is not thread safe, and the invoke

method was thread safe.

Does anybody have any ideas.

Katie

[2443 byte] By [Katie446] at [2007-12-23]