0

私はWindowsフォームを使用していて、メインフォームがあります。ボタンをクリックすると、いくつかの作業を行うコンソールウィンドウが開き、完了したら、すべてのアプリケーション(メインフォーム)を閉じずにコンソールを閉じます。およびコンソールウィンドウに属するEnvironment.Exit(1)関数またはでコンソールを閉じようとしました。と両方がコンソールを 閉じますが、フォームも閉じます。アプリケーション全体を閉じずにコンソールだけを閉じる方法があるのだろうかDestroy()Destroy()Create()Environment.Exit(1)Destroy()

編集

    private void btSync_Click(object sender, EventArgs e)
    {
        Create();
        ServerSync sycs=new ServerSync();
        Thread sync = new Thread(new ThreadStart(sycs.run));
        sync.Start();
    }

スレッドCreate()を実行するコンソールウィンドウを開きます。Socket()

解決された問題 スレッドを開始するときに、コードの最後に追加し、ThreadName.Abortスレッドの外側で、コンソールThreadName.IsAlived==falseの場合とその内側をチェックしてから、その動作を確認します。Hide()Destroy()

AppDeveloperHide()の回答からのメソッド。ご協力いただきありがとうございます!

4

2 に答える 2

1

Environment.Exit()hideを使用する代わりにConsole Window

using System.Runtime.InteropServices;
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();

[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

const int SW_HIDE = 0x0;
const int SW_SHOW = 0x5;

public static void HideConsoleWindow()
{
    var handle = GetConsoleWindow();
    ShowWindow(handle, SW_HIDE);

}
于 2013-02-27T12:01:59.633 に答える
0

たぶんconsole.hide()オプションがありますか?それを試すことができます。

于 2013-02-27T11:54:35.247 に答える