Zdravíčko, prosím Vás mám desktopovou aplikaci - deskova hra. Používám Background worker pro vymýšlení tahů, když hraje PC. Problem ale nastane tehdy, když PC přemýšlí a já změním jeho úroveň. Pak dostanu výjimku, že bw nemůže běžet víckrát. Takže má otázka je: jak bw předčasne ukončit? Metoda CancleAsync() neni pro me vhodna - ukonceni nastane, az kdyz je vypocet ukonce. ale to neni dobre, uz jen proto, ze clovek musi cekat. to je spatne. K vymýšlení tahu mám třídu Brain a statickou metodu GetBestTurn, klasicky minimax, řekl jsem si, že k předčasnému ukončení použiju zámek - statickou promenou lock, pokud je true, tak vypocet se ukonci a vrati souradnice s -1,-1. Kdyz je lock false, tak vypocet probehne korektne. Jenze ani tohle neni reseni, protoze (asi!!!) ohodnocovaci funkce taky zabere nejaky cas, takze driv nez se projevi zamek, tak nastane vyjimka. Můžet mi poradit nejake vhodne reseni? :)
|