Я хочу открыть консоль в wpf, я пытался открыть консоль дважды, не закрывая программу, но во второй раз программа разбилась, я не на самом деле знает, почему, и я хотел бы помочьКонсоль разбилась, когда я пытаюсь открыть ее дважды в wpf
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();
}
}
}
_ «программа разбилась» _ - будьте конкретны. Каким образом программа «врезалась»? Это просто перестало отвечать? Вызывает ли это исключение? Это просто исчезло? Где какие-либо сообщения об ошибках? Если да, то что они сказали, _exactly_? Если возникло исключение, какова была трассировка стека? Пожалуйста, улучшите свой вопрос. –
Я пробовал код, который вы отправили, и я получаю три разных поведения: иногда он отлично работает; иногда он висит консоль, и, следовательно, вся программа; и иногда он вызывает исключение в вызове 'ReadLine()': дескриптор недействителен'. Я не знаю достаточно о API-интерфейсе консоли, чтобы объяснить, почему то, что вы делаете, само по себе неправильно, но, похоже, это не то, как вы ожидаете использовать консольный API. Более того, я бы сказал, даже если это сработало, это неправильно. У вас есть программа GUI; если вы хотите показать консоль, отобразите собственное окно и используйте его для этой цели. –