首先,我已经阅读了有关此问题的所有帖子,并且我已经进行了一些改进。但是,我似乎需要你的帮助:))
我有一个包含多个线程的程序,有时(并非总是)程序的CPU使用率增加到100%,并且在关闭程序之前从未减少。
正如我在其他类似帖子中看到的那样,我使用visual studio(2012 - Ultimate)运行应用程序。 我暂停了应用程序,并打开了线程窗口。 在那里我暂停线程,直到我找到4个线程卡住应用程序。 all都引用相同的代码行(对构造函数的调用)。 我检查了内部和外部的构造函数,找不到任何可能导致它的循环。 为了更加小心,我已经为几乎所有代码行添加了断点并恢复了应用程序。它们都没有被触发。
这是代码行:
public static void GenerateDefacementSensors(ICrawlerManager cm)
{
m_SensorsMap = new Dictionary<DefacementSensorType, DefacementSensor>();
// Create instance of all sensors
// For any new defacement sensor, don't forget to add an appropriate line here
// m_SensorsMap.add(DefacementSensorType.[Type], new [Type]Sensor())
try
{
if (m_SensorsMap.Count <= 0)
{
m_SensorsMap.Add(DefacementSensorType.BackgroundSensor, new BackgroundSensor());
m_SensorsMap.Add(DefacementSensorType.TaglinesSensor, new TaglinesSensor(cm.Database));
m_SensorsMap.Add(DefacementSensorType.SingleImageSensor, new SingleImageSensor());
}
}
catch (Exception)
{
Console.WriteLine("There was a problem initializing defacement sensors");
}
}
第二个“m_SensorsMap.Add”标有绿色箭头,据我了解,这意味着它仍在等待第一行完成。
顺便说一下,m_SensorsMap.Count值是3。
我怎样才能找到问题? 这是一个循环吗? 或者可能是死锁(没有意义,因为它不应该是100%cpu,对吧?) 上传代码毫无意义,因为这是一个庞大的项目。 我需要更多一般的帮助,比如如何调试? 它可能不是一个循环吗?
因为这是一个每次都会返回的错误,而不是在我发现问题之前我没有关闭应用程序:)
提前致谢!!
编辑: 构造函数:
public TaglinesSensor(IDatabase db)
{
m_DB = db;
}
答案 0 :(得分:0)
我无法找到问题所以我改变了设计,以便不再调用那些构造函数。
感谢那些试图提供帮助的人。
沙乌尔