示例#1
0
        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);
        }
示例#2
0
 public static extern void MDataKeysForEachNative(
     IntPtr appPtr,
     ulong keysHandle,
     MDataKeysForEachCb forEachCb,
     IntPtr self,
     MDataKeysForEachResCb resCb);
示例#3
0
 public void MDataKeysForEach(IntPtr appPtr, ulong keysHandle, MDataKeysForEachCb forEachCb, IntPtr self, MDataKeysForEachResCb resCb)
 {
     MDataKeysForEachNative(appPtr, keysHandle, forEachCb, self, resCb);
 }