[Fix] Bugzilla #18245 - System.Runtime.MemoryCache.GetValues() throws LockRecursionException with expired items
- GetValues() calls MemoryCacheContainer.GetEntry() which now gets an EnterUpgradeableReadLock needed by ExpireIfNeeded()
- Added a test case
Merge pull request #938 from exony-craigminihan/bugzilla#18245

[Fix] Bugzilla #18245 - System.Runtime.MemoryCache.GetValues() throws Lo...