Run NegaMax in a worker thread.

Run the AI in a separate thread so the UI can still be responsive.
Improve interaction between worker and UI threads.

Clone the grid for the AI player and send the calculated move to the UI
thread to apply to the grid. The avoids a race condition and the UI
thread cannot see the AI's work on the grid.