簡體   English   中英

C#控制台中不存在該應用程序,我想重新啟動該控制台

[英]Application doesnt exist in C# console and I want to restart the console

我做了一個子手游戲,我想能夠在您輸了之后重新啟動它,而不是每次都必須手動重新啟動程序。

我在互聯網上看到了“應用程序”,可用於重新啟動控制台。 但是,它說應用程序不存在。

 Close();
 System.Diagnostics.Process.Start(Application.ExecutablePath);

請幫我!

您可以在這里找到它:

您需要包括System.Windows.Forms程序集並添加一個using

using System.Windows.Forms

但是對於控制台應用程序,我更喜歡使用 (在控制台程序集中):

System.Reflection.Assembly.GetExecutingAssembly().Location

就像安德烈(Andre)在評論中說的那樣,您甚至最好使用Assembly.GetEntryAssembly()因為它會得到第一個被調用的程序集(當然,它是控制台應用程序中的可執行文件)

當然,就像先前的答案已被刪除一樣,請先重新打開,然后關閉該應用程序。

我認為您確實不需要重新啟動控制台應用程序來重新啟動游戲。 這是可以使用的可能的游戲重新啟動方案:

class Program
{
    static void Main(string[] args)
    {
        Game game = new Game();

        Menu menu = new Menu(game);

        game.Finished += menu.AskAndRun;

        menu.Welcome();
    }
}

class Menu
{
    public readonly IRunnable runnable;

    public Menu(IRunnable runnable)
    {
        this.runnable = runnable;
    }

    public void Welcome()
    {
        Console.WriteLine("Welcome, Player!");

        AskAndRun();
    }

    public void AskAndRun()
    {
        Console.WriteLine("\nTo play a new game, press [ENTER]");

        Console.ReadLine();

        Console.Clear();

        runnable.Run();
    }
}

interface IRunnable
{
    void Run();
}

class Game : IRunnable
{
    public event Action Finished;

    public void Run()
    {
        Console.WriteLine("Game started here...");

        Console.WriteLine("Oops! Game finished already");

        if (Finished != null)
        {
            Finished();
        }
    }
}

如您所見, Game類與現在由Menu類處理的重啟邏輯分離。 現在,引入新功能(例如退出和計算已啟動游戲的數量)變得微不足道了。

注意Menu不依賴Game的事實。 這取決於IRunnable ,這將幫助您IRunnable更改Game ,測試Menu並引入新功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM