我有一个Winform应用程序。每隔几秒钟,我会检查一些日志文件,读取任何新数据,并将任何新数据插入到数据库中。
当我运行应用程序约1个半小时时,我会收到一个StackOverflowException异常。在整个时间段内,日志文件中没有新数据,因此没有添加任何新数据到数据库中。
代码出错的地方是...
当我运行应用程序约1个半小时时,我会收到一个StackOverflowException异常。在整个时间段内,日志文件中没有新数据,因此没有添加任何新数据到数据库中。
代码出错的地方是...
if (pictureBox == null)
{
continue;
}
if (pictureBox.InvokeRequired)
{
var toolTip = new ToolTip();
GameServer tempGameFile = gameServer;
pictureBox.Invoke(new MethodInvoker(
() => toolTip.SetToolTip(pictureBox,
string.Format(
"{0} : Last Checked: {1}; Last Updated: {2}",
tempGameFile.Name,
tempGameFile.CheckedOn.ToLongTimeString(),
tempGameFile.UpdatedOn.HasValue
?
tempGameFile.UpdatedOn.Value.ToLongTimeString()
: "-No Date Set-"))));
}
pictureBox.Image = Resources.RedButton;
“pictureBox.Invoke(..)”引发了该错误。
所以,我不确定如何调试以找出问题所在?有什么建议吗?
更新
尝试Dmitry的建议后,我启动了ANTS分析器内存剖面图,并快速查看了一下,似乎有很多ToolTip控件的实例。
这是20分钟后的类列表摘要。
许多事件处理程序(我是否没有释放某些内容?)
还有一些工具提示...
这是所有实例的屏幕截图,这是单个工具提示控件图/地图的屏幕截图.. 我不知道如何阅读害羞
GameServersParsingBackgroundWorker_DoWork
方法内被调用的..一个BackgroundWorker
进程。 - Pure.Krome