私はここで直面しているのと同じ状況を見つけることができませんでした。修正閉鎖質問へのアクセス
ここで私が心配程度だ抜粋です:
private static StatsNode CreateASyncStatsNodes(object threadSafeLocker, Dictionary<Thread, StatsNode> threadsafeTeamStats)
{
StatsNode tempStatsNode;
var currentThread = Thread.CurrentThread;
lock (threadSafeLocker)
{
if (!threadsafeTeamStats.ContainsKey(currentThread))
threadsafeTeamStats[currentThread] = new StatsNode(0, 0);
tempStatsNode = threadsafeTeamStats[currentThread];
}
return tempStatsNode;
}
を私には、これは正常に見える、しかしReSharperのは2回目の呼び出しに対して警告を与えている:
var threadsafeVacantStats = new Dictionary<Thread, StatsNode>();
var threadSafeVacantLocker = new Object();
var threadsafeZoneStats = new Dictionary<Thread, StatsNode>();
var threadSafeZoneLocker = new Object();
Parallel.ForEach(m_TeamAreasByZone[zone.ContainerID], team =>
{
var tempVacantStatNode = CreateASyncStatsNodes(threadSafeVacantLocker, threadsafeVacantStats);
var tempZoneStatNode = CreateASyncStatsNodes(threadSafeZoneLocker, threadsafeZoneStats);
//...other stuff
}
ここでは、呼び出している機能だが、 CreateASyncStatsNodes(最初の呼び出しは正常です)。 そのアドバイスに続いて、それがにブロックを回す:これは本当に私には意味がない、と(それがそもそも壊れていた場合)、実際に何を修正していないようだ
var threadsafeVacantStats = new Dictionary<Thread, StatsNode>();
var threadSafeVacantLocker = new Object();
var threadsafeZoneStats = new Dictionary<Thread, StatsNode>();
var threadSafeZoneLocker = new Object();
object locker = threadSafeZoneLocker;
Dictionary<Thread, StatsNode> stats = threadsafeZoneStats;
Parallel.ForEach(m_TeamAreasByZone[zone.ContainerID], team =>
{
var tempVacantStatNode = CreateASyncStatsNodes(threadSafeVacantLocker, threadsafeVacantStats);
var tempZoneStatNode = CreateASyncStatsNodes(locker, stats);
//...
}
。 resharperは間違いなく警告を発しているのか、何か不足していますか?
使用しているR#のバージョンは?私はR#5.0を使用して、上記のコードの警告を取得しません。 – adrianbanks
これはバージョン5.1です – Rob
まだコードの残りの部分をコメントアウトしていますが、まだ警告を出していますので、間違いだと思っています。# – Rob