private unsafe void ProcessBeginTran(IMessageChannel channel, MessageChunk *first) { var req = new BeginTranRequire(); req.FastReadFrom(first); channel.ReturnMessageChunks(first); NativeApi.BeginTransaction(req.ReadCommitted, req.WaitHandle, channel.RemoteRuntimeId); }
public async ValueTask <IntPtr> BeginTransactionAsync(bool readCommitted) { var ts = taskPool.Allocate(); var req = new BeginTranRequire(readCommitted, ts.GCHandlePtr); channel.SendMessage(ref req); var msg = await ts.WaitAsync(); taskPool.Free(ts); //TODO:异常处理 return(msg.Data1); }