Я бы порекомендовал выделить вашу вычислительную логику в другую строку.Я ненавижу видеть подобные вещи от других разработчиков.Его сложнее читать и труднее отлаживать (как указывает ваш вопрос).
Ваш работник никогда не должен быть нулевым, если вы находитесь внутри метода do work.Хотя я рекомендую выполнять проверки на нуль - если здесь был ноль, то что-то еще не так.
if ((worker != null) && ((currentQual % fivePercent == 0)))
{
object result = ((float)++currentQual / (float)numQuals) * 100;
int resultint = 0;
if(Int32.TryParse(result.ToString(), out resultint))
{
worker.ReportProgress(Convert.ToInt32(result));
}
}