protected override IAsyncResult BeginInvokeCore(InvokeArgs invokeArgs, AsyncCallback callback, object userState) { var returnData = Invoke(invokeArgs.OperationName, invokeArgs.Parameters); var asyncResult = new LocalAsyncResult(callback, userState, returnData); _syncContext.Post(o => ((LocalAsyncResult)o).Complete(), asyncResult); return asyncResult; }
protected override sealed IAsyncResult BeginSubmitCore(EntityChangeSet changeSet, AsyncCallback callback, object userState) { IEnumerable<ChangeSetEntry> operations = Submit(changeSet); LocalAsyncResult asyncResult = new LocalAsyncResult(callback, userState, changeSet, operations); _syncContext.Post(delegate(object o) { ((LocalAsyncResult)o).Complete(); }, asyncResult); return asyncResult; }
//protected override sealed IAsyncResult BeginQueryCore(EntityQuery query, AsyncCallback callback, object userState) //{ // IQueryable<Entity> localQuery = Query(query); // LocalAsyncResult asyncResult = new QueryAsyncResult(callback, userState, localQuery); // this.synchronizationContext.Post(o => ((LocalAsyncResult)o).Complete(), asyncResult); // return asyncResult; //} protected override IAsyncResult BeginQueryCore(EntityQuery query, AsyncCallback callback, object userState) { Debug.WriteLine("BeginQueryCore(" + query.QueryName + ", " + _queriesInProgress.Count + ")"); if (_queriesInProgress.Count != 0) Debug.WriteLine("...open queries found"); _queriesInProgress.Add(query.QueryName); if (query.QueryName == "GetPermissionsForUser") Debug.WriteLine(query.QueryName); IQueryable<Entity> localQuery = Query(query.QueryName, query.Parameters); LocalAsyncResult asyncResult = new LocalAsyncResult(query.QueryName, callback, userState, localQuery); _syncContext.Post(delegate(object o) { Debug.WriteLine("calling .Complete()"); ((LocalAsyncResult)o).Complete(); }, asyncResult); return asyncResult; }