Selamlar, ben de benzer bir tablo renklendirme işlemi yapmıştım.
Binlerce kayıt olmasına rağmen en fazla 3 saniye gibi bir gecikme gördüm şimdilik.
for (int i = 0; i < mali_dataGridView.Rows.Count; i++)
{
string type = mali_dataGridView[4, i].Value.ToString();
if (type == "Fatura Kes" || type == "Ödeme Yap")
{
mali_dataGridView[4, i].Style.ForeColor = Color.DarkRed;
mali_dataGridView[5, i].Style.ForeColor = Color.DarkRed;
mali_dataGridView[6, i].Style.ForeColor = Color.DarkRed;
}
if (type == "Maaş Ode")
{
mali_dataGridView[4, i].Style.ForeColor = Color.DarkRed;
mali_dataGridView[5, i].Style.ForeColor = Color.DarkRed;
}
}
Sizin kod ile arasındaki iki fark "Cells["bitti"].Value = "EVET"/"HAYIR";" kısmındaki Cell Value değişimi ve Background renginin de değişiyor olması.
Bu iki işlemi kapatarak bir test etmenizi tavsiye ederim.
Yani Cell'lerin değerlerini değiştirmeden sadece renklerini değiştirmek işlemi hızlandırabilir.
Value'ları dinamik değiştirmek her değişen value için datagridview'de "column size changed" event'i tetikleyebilir.
Bu da her satır için bu event'in tekrar tekrar çağırılması ve vakit kaybına sebep olacaktır.
Ayrıca cell'lerin değerini değiştirmek o cell'in datatype'ını değiştirmek anlamına da geliyor yanlış hatırlamıyorsam.
Yani sizin durumunuzda değişiklik yapılan cell'in tipi bool'dan string'e dinamik olarak değiştirilmek zorunda kalınıyor. Bu da bir etken olabilir.
Kodu sadeleştirip tek tek ekstra özellikler ekledikçe test ederseniz hangi aşamanın en çok vakit aldığını izole edip bulabilirsiniz.
EDIT:
En alttaki Refresh() methodu gözümden kaçmış, diğer arkadaşların belirttiği gibi kesinlikle yavaşlıgın sebeplerinden biri bu.