在我簡單的生產者/消費者多線程項目中,我正在使用自定義隊列集合。我定義我的TryDequeue
這樣的...如何解決「方法沒有超載,需要0個參數?」錯誤
public bool TryDequeue(out F data)
{
data = default(F);
bool success = false;
lock (_queueLock)
{
if (_queue.Count > 0)
{
data = _queue.Dequeue();
success = true;
count--;
}
}
return success;
}
,當我嘗試這個...
private static void Consumer()
{
while (true)
{
Thread.Sleep(100);
string item = null;
lock (sharedQueue)
{
while (sharedQueue.Count == 0)
Monitor.Wait(sharedQueue);
item = sharedQueue.TryDequeue();
}
Console.WriteLine("Consuming item: {0}", item);
}
}
這是第二個線程,我得到這個錯誤:
Error 1 No overload for method 'TryDequeue' takes 0 arguments
燦任何人都幫助我?謝謝。
你的方法有一個你需要傳入的參數'data'。 – juharr
[方法'查詢'沒有重載需要5個參數salesforce]的可能重複(http://stackoverflow.com/questions/32294490/no-重載爲方法查詢採取-5參數銷售隊伍) –
也你真的應該創建單獨的對象用作鎖而不是'lock(sharedQueue)'。 [_最佳做法是定義要鎖定的私有對象或私有靜態對象變量以保護所有實例的通用數據._](https://msdn.microsoft.com/en-us/library/c5kehkcz.aspx) – juharr