public static Task <List <List <byte> > > MDataKeysForEachAsync(ulong entKeysH) { var tcs = new TaskCompletionSource <List <List <byte> > >(); var keys = new List <List <byte> >(); MDataKeysForEachCb forEachCb = null; forEachCb = (pVoid, bytePtr, len) => { var key = bytePtr.ToList <byte>(len); keys.Add(key); }; CallbackManager.Register(forEachCb); MDataKeysForEachResCb forEachResCb = null; forEachResCb = (ptr, result) => { if (result.ErrorCode != 0) { tcs.SetException(result.ToException()); CallbackManager.Unregister(forEachCb); CallbackManager.Unregister(forEachResCb); return; } tcs.SetResult(keys); CallbackManager.Unregister(forEachCb); CallbackManager.Unregister(forEachResCb); }; CallbackManager.Register(forEachResCb); NativeBindings.MDataKeysForEach(Session.AppPtr, entKeysH, forEachCb, Session.UserData, forEachResCb); return(tcs.Task); }
public static extern void MDataKeysForEachNative( IntPtr appPtr, ulong keysHandle, MDataKeysForEachCb forEachCb, IntPtr self, MDataKeysForEachResCb resCb);
public void MDataKeysForEach(IntPtr appPtr, ulong keysHandle, MDataKeysForEachCb forEachCb, IntPtr self, MDataKeysForEachResCb resCb) { MDataKeysForEachNative(appPtr, keysHandle, forEachCb, self, resCb); }