本文整理汇总了C#中Msg.AddReferences方法的典型用法代码示例。如果您正苦于以下问题:C# Msg.AddReferences方法的具体用法?C# Msg.AddReferences怎么用?C# Msg.AddReferences使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Msg
的用法示例。
在下文中一共展示了Msg.AddReferences方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Distribute
/// <summary>
/// Put the message to all active pipes.
/// </summary>
private void Distribute(ref Msg msg)
{
// If there are no matching pipes available, simply drop the message.
if (m_matching == 0)
{
msg.Close();
msg.InitEmpty();
return;
}
if (msg.MsgType != MsgType.Pool)
{
for (int i = 0; i < m_matching; ++i)
{
if (!Write(m_pipes[i], ref msg))
{
--i; // Retry last write because index will have been swapped
}
}
msg.Close();
msg.InitEmpty();
return;
}
// Add matching-1 references to the message. We already hold one reference,
// that's why -1.
msg.AddReferences(m_matching - 1);
// Push copy of the message to each matching pipe.
int failed = 0;
for (int i = 0; i < m_matching; ++i)
{
if (!Write(m_pipes[i], ref msg))
{
++failed;
--i; // Retry last write because index will have been swapped
}
}
if (failed != 0)
msg.RemoveReferences(failed);
// Detach the original message from the data buffer. Note that we don't
// close the message. That's because we've already used all the references.
msg.InitEmpty();
}