2015-04-30 1 views
-2

Я пишу игру в XNA, и у меня есть экран входа в систему, который является формой окна и самой игрой. Мне нужно перейти с экрана входа в игру, но когда я попробую, он говорит, что я не могу запустить больше, чем один раз в то время. как я могу это решить? это код Логин экрана:Как использовать запустить два процесса на визуальной студии

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace ProtoType 
{ 
    public partial class SighIn : Form 
    { 
     public SighIn() 
    { 
     InitializeComponent(); 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     if ((textBox1.Text.Equals("Developer")) && (textBox2.Text.Equals("poxus17"))) 
     { 
      using (Game1 game = new Game1()) 
      {     
       game.Run(); 
      } 

     } 
    } 
    } 
} 
+2

пространство имен System.Threading - хорошее начало –

ответ

0

Метод XNA Game.Run выполняет Application.Run, который обеспечивает сообщение насос для основного потока (поток пользовательского интерфейса).

В тот момент, когда ваша форма работает и получает нажатие кнопки, Application.Run уже выполняется (возможно, через Form.ShowDialog). В то же время у вас не может быть двух сообщений в одном потоке.

Решение должно разрешить Application.Run завершить, а затем вызвать Game.Run.

Что-то вроде этого:

Form form = new SignIn(); 
if (form.ShowDialog() == DialogResult.OK) 
{ 
    if (form.UserName =="Developer" && form.Password == "poxus17") 
    { 
     using (Game1 game = new Game1()) 
     { 
      game.Run(); 
     } 
    } 
} 

Теперь обработчик нажатия кнопки вашей формы можно скопировать поля TextBox на свойства (имя пользователя и пароль) и установите this.DialogResult = DialogResult.OK. Это закроет форму, заполнив насос сообщений, запущенный ShowDialog, затем, после проверки, запустите новый насос сообщений с Game.Run.

+0

Боюсь, что это не сработало. в случае, если было непонятно, я использую application.run для активации программы, а не showDialog(), потому что это вызывает проблемы. – user3439131

+0

@ user3439131 Вы заменили содержание Program.Main (или где бы вы ни находились)? – Tergiver

Смежные вопросы