-1
wpfでコンソールを開きたいが、プログラムを閉じずにコンソールを2回開こうとしたが、2回目にプログラムがクラッシュした本当に知っているなぜ、私はあなたが新しいコンソールを割り当て、その新しいコンソール用ReadLine()
を使用して保持する場合もConsole
クラスの入力ストリームを再割り当てする必要があるように見えますwpfで2回開こうとするとコンソールがクラッシュする
using System;
using System.Windows;
using System.Runtime.InteropServices;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
[DllImport("Kernel32")]
public static extern void AllocConsole();
[DllImport("Kernel32")]
public static extern void FreeConsole();
private void button_Click(object sender, RoutedEventArgs e)
{
AllocConsole();
string x = Console.ReadLine();
FreeConsole();
}
}
}
_ "プログラムがクラッシュしました" _ - 具体的にしてください。どのようにプログラムは "クラッシュ"しましたか?それはちょうど応答を停止しましたか?それは例外をスローしましたか?それはただ消えましたか?任意のエラーメッセージがどこにありますか?もしそうなら、彼らは何を言ったのですか?例外があった場合、スタックトレースは何ですか?あなたの質問を改善してください。 –
投稿したコードを試しましたが、私は3つの異なる動作をします。時にはコンソールとプログラム全体がハングすることがあります。 'ReadLine()'呼び出しで例外をスローすることがあります: 'ハンドルが無効です'。あなたがやっていることがそれ自体が間違っている理由を説明するには、コンソールAPIについて十分に分かっていませんが、コンソールAPIを使用する方法ではないことは明らかです。さらに、それがうまくいっても、これは間違ったことです。あなたにはGUIプログラムがあります。コンソールを表示する場合は、独自のウィンドウを表示し、その目的のために使用します。 –