2015-04-30 48 views
-2

我正在用XNA編寫遊戲,我有登錄界面,這是Windows窗體,還有遊戲本身。我需要從登錄屏幕轉到遊戲,但是當我嘗試它時,我說當時我不能跑多一個。我該如何解決這個問題? 這是登錄屏幕代碼:如何在visual studio上運行兩個進程

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其提供主線程(UI線程)的消息泵。

在窗體正在運行並獲取按鈕單擊的時間點,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(); 
     } 
    } 
} 

現在表單的按鈕單擊處理程序可以將文本字段複製到屬性(用戶名和密碼),並設置this.DialogResult = DialogResult.OK。這將關閉表單,完成由ShowDialog啓動的消息泵,然後在驗證後,使用Game.Run啓動一個新的消息泵。

+0

恐怕它沒有工作。如果不清楚,我使用application.run來激活程序,而不是showDialog(),因爲這會導致問題。 – user3439131

+0

@ user3439131您是否替換了Program.Main的內容(或主要位置)? – Tergiver

相關問題