Я не совсем уверен, что реальная проблема, учитывая ваш пример, не может быть кодом, который выполняется, но, пожалуйста, попробуйте что-то вроде этого:
internal void AddItem(tabdesciptor tab)
{
if (InvokeRequired)
{
Invoke(new Action<tabdescriptor>(AddItem), tab);
}
else
{
//...
}
}
Также, пожалуйста, убедитесь, что это не то, что находится в else
части, которая выходит из строя.