本文整理汇总了C#中Wombat.MamaMsg.SelfManageLifeTime方法的典型用法代码示例。如果您正苦于以下问题:C# MamaMsg.SelfManageLifeTime方法的具体用法?C# MamaMsg.SelfManageLifeTime怎么用?C# MamaMsg.SelfManageLifeTime使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Wombat.MamaMsg
的用法示例。
在下文中一共展示了MamaMsg.SelfManageLifeTime方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: getMsg
/// <summary>
/// Get a submessage.
/// </summary>
public MamaMsg getMsg(
string name,
ushort fid)
{
if (msg_ == null)
{
msg_ = new MamaMsg ();
msg_.SelfManageLifeTime(false);
}
tryMsgImpl(name, fid, ref msg_, true);
return msg_;
}
示例2: sendFromInboxWithThrottle
/// <summary>
/// Send a p2p message from the specified inbox using the throttle.
/// The lifecycle of the message sent is controlled by the user of the API. The
/// callback indicates when the API is no longer using the message and can be
/// destroyed/reused by the application.
/// </summary>
/// <param name="inbox">The MamaInbox which will process any response to the sent message.</param>
/// <param name="message">The MamaMsg to send.</param>
/// <param name="callback">The callback which will be invoked when the message
/// is sent from the throttle queue.</param>
/// <param name="closure">User supplied data returned when the callback is invoked.</param>
public void sendFromInboxWithThrottle(
MamaInbox inbox,
MamaMsg message,
MamaSendCompleteCallback callback,
object closure)
{
#if MAMA_WRAPPERS_CHECK_ARGUMENTS
if (inbox == null)
{
throw new ArgumentNullException("inbox");
}
if (message == null)
{
throw new ArgumentNullException("message");
}
if (callback == null)
{
throw new ArgumentNullException("callback");
}
EnsurePeerCreated();
#endif // MAMA_WRAPPERS_CHECK_ARGUMENTS
// Create a new callback wrapper
MamaCallbackWrapper<MamaSendCompleteCallback, MamaThrottledSendCompleteDelegate> wrapper =
new MamaCallbackWrapper<MamaSendCompleteCallback, MamaThrottledSendCompleteDelegate>(
callback,
closure,
new MamaThrottledSendCompleteDelegate(onSendComplete));
// Add this to the store
IntPtr nativeClosure = mCallbackStore.StoreWrapper(wrapper);
// Call the native function
int code = NativeMethods.mamaPublisher_sendFromInboxWithThrottle(
nativeHandle,
inbox.NativeHandle,
message.NativeHandle,
(Wombat.MamaPublisher.MamaThrottledSendCompleteDelegate)wrapper.NativeDelegate,
nativeClosure);
try
{
CheckResultCode(code);
}
// If something goes wrong then remove the wrapper from the store
catch
{
// Remove the wrapper
mCallbackStore.RemoveWrapper(nativeClosure);
// Dispose it
((IDisposable)wrapper).Dispose();
// Rethrow the exception
throw;
}
// Ensure that the message passed will not delete its native peer
message.SelfManageLifeTime(false);
}