如何解决“方法没有重载,需要 0 个参数?”错误
本文关键字:需要 参数 错误 重载 何解决 解决 方法 | 更新日期: 2023-09-27 18:37:16
在我的简单生产者/消费者多线程项目中,我正在使用自定义队列集合。我这样定义我的TryDequeue
...
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
谁能帮我?谢谢。
while (true)
{
Thread.Sleep(100);
string item = null;
lock (sharedQueue)
{
while (sharedQueue.Count == 0)
Monitor.Wait(sharedQueue);
if(sharedQueue.TryDequeue(out item)) //succes!
...
else //something went wrong
...
}
Console.WriteLine("Consuming item: {0}", item);
}
您的方法返回一个bool
,您需要将项目与括号之间的 out
关键字放在一起。现在,您没有传递预期的out F data
参数。
item = sharedQueue.TryDequeue();
是罪魁祸首。 TryDequeue()
需要一个论据。
sharedQueue.TryDequeue(out item);
行得通吗?这似乎是你需要做的。