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); }
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); } }