/// <summary> run the game. </summary> public virtual void Run() { // Create Referee _referee = CreateReferee(_numCards, _numPlayers, _seed); // Create Views for (int i = 0; i < _numPlayers; ++i) { CardGameViewWindow view = (CardGameViewWindow)CreateView(_numCards, _imageURI); _referee.Join(view); view.Show(); } // run referee in background thread BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += new DoWorkEventHandler(delegate { _referee.Start(); }); worker.RunWorkerAsync(); // run event loop in this thread App app = new App(); app.Run(); }