Search code examples
c#silverlightasynchronouswcf-ria-services

Can I Trust LoadOperation.Completed event


Suppose that we have the code shown below,

LoadOperation lop=_dsrvX.Load(_dsrvX.GetUserDetails(userID));
lop.Completed +=(s,a)=>
{
  Debug.WriteLine("Completed but,
           First I load it then I registered Completed evet!");
}

I see this type code everywhere so I wonder is it right?

As I know when you call domainService methods this automatically fills domain service object's related EntitySet.

Suppose that LoadOperation(Can be Submit,Invoke ops.) completed rapidly and when I passed to the next line where I register completed event everything has done.Is it possible? It seems hard to achive that but can you give me 100% guarantee?

If you can't guarantee that I'm asking if there is a method of calling OperationBase objects manually?

Any comment will be appreciated.


Solution

  • Well, this is a crazy world, I would not give 100% guarantee of anything :P - But I do not think it should be a problem. If this bothers you, you can pass the callback as a parameter, like this:

    _dsrvX.Load(_dsrvX.GetUserDetails(userID), userDetailsCallBack, null);
    
    (...)
    
    void userDetailsCallBack(LoadOperation<UserDetails> op)
    {
       //do anything with the results
    }
    

    or, to simplify even further:

    _dsrvX.Load(_dsrvX.GetUserDetails(userID), (op)=>
       {
           //do anything with the results  
       }, null);