示例#1
0
        public Task <NSObject> RunTransactionAsync(TransactionUpdateHandler updateHandler)
        {
            var tcs = new TaskCompletionSource <NSObject> ();

            RunTransaction(updateHandler, (result_, error_) => {
                if (error_ != null)
                {
                    tcs.SetException(new NSErrorException(error_));
                }
                else
                {
                    tcs.SetResult(result_);
                }
            });
            return(tcs.Task);
        }
示例#2
0
        public void RunTransaction(TransactionUpdateHandler updateHandler, TransactionCompletionHandler completion)
        {
            _RunTransaction(InternalUpdateHandler, completion);

            NSObject InternalUpdateHandler(Transaction transaction, IntPtr pError)
            {
                if (updateHandler == null)
                {
                    return(null);
                }

                NSError error  = null;
                var     result = updateHandler(transaction, ref error);

                if (error != null)
                {
                    Marshal.WriteIntPtr(pError, error.Handle);
                }

                return(result);
            }
        }