private List<MediaData> GetMediaData()
{
NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
List<MediaData> rtpDataList = new List<MediaData>();
try
{
bool successed = this.meidaDataQueueLocker.TryEnterWriteLock(CgwConst.ENTER_LOCK_WAIT_TIME);
// 申请互斥
if (successed)
{
try
{
while (mediaDataQueue.Count > 0)
{
rtpDataList.Add(mediaDataQueue.Dequeue());
}
}
finally
{
// 释放互斥量
this.meidaDataQueueLocker.ExitWriteLock();
}
}
else
{
// 日志
logEx.Error("GetRtpData: Enert Write Lock Failed.WaitingReadCount:{0};WaitingWriteCount:{1}.", this.meidaDataQueueLocker.WaitingReadCount, this.meidaDataQueueLocker.WaitingWriteCount);
}
}
catch (Exception ex)
{
// 日志
logEx.Error(ex, "GetRtpData: Enert Write Lock Exception.");
}
return rtpDataList;
}