本文整理汇总了C#中System.LocalDataStoreSlot.IsValid方法的典型用法代码示例。如果您正苦于以下问题:C# LocalDataStoreSlot.IsValid方法的具体用法?C# LocalDataStoreSlot.IsValid怎么用?C# LocalDataStoreSlot.IsValid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.LocalDataStoreSlot
的用法示例。
在下文中一共展示了LocalDataStoreSlot.IsValid方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetData
/*=========================================================================
** Retrieves the value from the specified slot.
=========================================================================*/
public Object GetData(LocalDataStoreSlot slot)
{
Object o = null;
// Validate the slot.
m_Manager.ValidateSlot(slot);
// Cache the slot index to avoid synchronization issues.
int slotIdx = slot.Slot;
if (slotIdx >= 0)
{
// Delay expansion of m_DataTable if we can
if (slotIdx >= m_DataTable.Length)
return null;
// Retrieve the data from the given slot.
o = m_DataTable[slotIdx];
}
// Check if the slot has become invalid.
if (!slot.IsValid())
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_SlotHasBeenFreed"));
return o;
}
示例2: SetData
/*=========================================================================
** Sets the data in the specified slot.
=========================================================================*/
public void SetData(LocalDataStoreSlot slot, Object data)
{
// Validate the slot.
m_Manager.ValidateSlot(slot);
// I can't think of a way to avoid the race described in the
// LocalDataStoreSlot finalizer method without a lock.
lock (m_Manager)
{
if (!slot.IsValid())
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_SlotHasBeenFreed"));
// Do the actual set operation.
SetDataInternal(slot.Slot, data, true /*bAlloc*/ );
}
}
示例3: SetData
/*=========================================================================
** Sets the data in the specified slot.
=========================================================================*/
public void SetData(LocalDataStoreSlot slot, Object data)
{
// Validate the slot.
m_Manager.ValidateSlot(slot);
// I can't think of a way to avoid the race described in the
// LocalDataStoreSlot finalizer method without a lock.
bool tookLock = false;
RuntimeHelpers.PrepareConstrainedRegions();
try {
Monitor.ReliableEnter(m_Manager, ref tookLock);
if (!slot.IsValid())
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_SlotHasBeenFreed"));
// Do the actual set operation.
SetDataInternal(slot.Slot, data, true /*bAlloc*/ );
}
finally {
if (tookLock)
Monitor.Exit(m_Manager);
}
}