Вызов метода "Main" консольного приложения из приложения формы (по событию нажатия кнопки)
как я могу получить доступ и запустить консольное приложение из windows form, который является частью того же проекта. У меня есть форма Windows и консольное приложение. Я думаю, что могу опубликовать консольное приложение, а затем использовать Process.Start(path to console app)
но это не то, чего я хочу. Я хочу получить доступ и использовать Main
метод консольного приложения в проекте my form. Этот метод будет работать при нажатии на кнопку.
это дает следующую ошибку.
исключение InvalidOperationException не обработано Не удается прочитать ключи, если ни в одном из приложений нет консоли или когда ввод консоли был перенаправлен из файла. Попробуйте Console.Читать.
private void buttonApplication_Click(object sender, EventArgs e)
{
Ch15Extra_2.Program.Main();
}
вот методы.
ConsoleApp:
namespace Ch15Extra_2
{
public class Program
{
public static void Main()
{
Console.WriteLine("Here the app is running");
Console.ReadKey();
}
}
}
форма form1:
private void buttonApplication_Click(object sender, EventArgs e) { }
1 ответов
Если вам нужно запустить консольное приложение без приложения WinForms, и иногда вы хотите выполнить код консоли без запуска консольного приложения, у меня есть предложение для вас:
вы можете разделить свое решение на три части.
- приложения WinForms часть
- часть консоли
- библиотека Dll.
связать dll с первым и вторым проектами.
затем, если вам нужно запустить общий код из приложения WinFomrs, вы может сделать:
private void buttonApplication_Click(object sender, EventArgs e)
{
var shared = new SharedClass();
shared.Run();
}
SharedClass
будет реализован в третьем проекте.
Вы можете вызвать его из консольного приложения тоже.
upd
Проект 1: ClassLibrary.
public class SharedClass
{
public int DoLogic(int x)
{
return x*x;
}
}
Proj 2. Приложения WinForms. Имеет ссылку на проект 1
использование Shared;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
TextBox textBox = new TextBox();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var shared = new SharedClass();
textBox.Text = shared.DoLogic(10).ToString();
}
}
}
proj 3. Консольное Приложение
public class Program
{
public static void Main()
{
Console.WriteLine("Here the app is running");
var shared = new Shared.SharedClass();
Console.WriteLine(shared.DoLogic(10));
Console.ReadKey();
}
}
Я только что проверил - все работает.