internal void TransactionCompleted(PackageBase.ResultHandler handler, TransResult ret) { Activity.TransactionCompleted(ret); if (handler != null) { handler(ret); } }
protected override void HandleMessage(Message msg) { switch (msg.what) { case TRANSACTION: PackageBase pac = msg.obj as PackageBase; PackageBase.ResultHandler handler = pac.OnResult; bool first = true; TransResult nRet = TransResult.E_SEND_FAIL; TransResult ret = TransResult.E_SEND_FAIL; repeat: ret = TransResult.E_SEND_FAIL; for (int count = 0; count < pac.RepeatTimes; count++) { ret = pac.Communicate(); if (ret == TransResult.E_SUCC) { break; } System.Threading.Thread.Sleep(200); } if (first) { first = false; nRet = ret; } //将在交易之中,产生的交易进入队列上送 while ((pac = pac.DequeueWork()) != null) { goto repeat; } Proxy.TransactionCompleted(handler, nRet); break; default: //如果不是交易则activity必须实现IHandleMessage,自行处理消息 Proxy.HandleCustomMessage(msg); break; } }
protected static void AsyncTransaction(PackageBase package, PackageBase.ResultHandler handler) { package.OnResult = handler; SendMessage(ActivityHandler.TRANSACTION, package); }