/// <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(); }
/// <summary> run the game. </summary> public virtual void Run() { // Run the Referee in this thread _referee = CreateReferee(_numCards, _numPlayers, _seed); for (int i = 0; i < _numPlayers; ++i ) { CardGameViewWindow view = (CardGameViewWindow)CreateView(_numCards, _imageURI); view.Show(); _referee.Join(view); } // Create Views in their own threads /* for (int i=0; i<_numPlayers; ++i) { Thread t = new Thread(new ThreadStart(delegate { CardGameViewWindow view = (CardGameViewWindow)CreateView(_numCards, _imageURI); _referee.Join(view); TriggerStart(); view.ShowDialog(); })); t.SetApartmentState(System.Threading.ApartmentState.STA); t.Start(); } */ }