Zastanów się, kiedy ta pętla się zatrzymuje. Gdy trafisz na odpowiednią liczbę(dla tego przypadku będzie to po około(ponad?) 200000 iteracjach) przypisujesz do zmiennej x wartość kontrol i… zwiększasz ją o 0.00001 przez co pętla nie może się zakończyć i trwa to bez końca. Zamiast przypisywać kontrol do x wstaw tam break i będzie dobrze(choć tą pętle i tak można skrócić, zresztą, ona w ogóle nie jest potrzebna, od tego jest System.Math.Sqrt).
Dla pierwiastków sześciennych skorzystaj z metody Math.Pow(jako iż potęgowanie jest działaniem odwrotnym do pierwiastkowania) - za wykładnik podstaw odwrotność stopnia pierwiastka(czyli dla sześciennego: Math.Pow(x, 1/3))
x = kontrol; to nie jedyny problem. Przykładowo u mnie ten Twój kod nie działa, a wynika to z tego, że wartości dwóch zmiennych typu double nie powinno się porównywać przy użyciu operatora == (chyba, że zrobisz własną strukturę np. MyDouble dziedziczącą po Double i przeciążysz w niej ten operator). Materiałów w sieci na ten temat jest dość sporo. Zacznij od tego linku http://blogs.msdn.com/b/kirillosenkov/a … sults.aspx, bo dobitnie pokazuje na czym polega problem.