2014-03-04 48 views
0

有誰知道是否有方法在Parallel.Foreach庫中指定線程等待時間?在Parallel.Foreach循環中增加線程等待時間

+1

什麼是'線程等待times'? –

+0

例如,如果我想指定一個cetain線程最多等待5秒,如果它被前一個線程阻塞。 – Sike12

+2

你能告訴我們你在等待嗎?你的意思是你使用'Thread.Sleep'嗎? –

回答

1

可以鎖定使用Monitor,並指定其超時:

// early in the method. 
var obj = new object(); 

int timeout = 5000; // 5 seconds 
bool lockWasTaken; 

try 
{ 
    lockWasTaken = Monitor.TryEnter(obj, timeout); 
    if (lockwasTaken); 
    { 
     // your critical code 
    } 
} 
finally 
{ 
    if (lockWasTaken) 
    { 
     Monitor.Exit(obj); 
    } 
} 
+1

不一定。如果在調用''Parallel.ForEach''之前創建了本地對象*,則它是一個非常有用的鎖定對象。 –