如何从 Windows 窗体访问并运行控制台应用程序,这是同一项目的一部分。我有一个 Windows 窗体和一个控制台应用程序。我认为我可以发布控制台应用程序,然后使用Process.Start(path to console app)
但这不是我想要的。我想访问并使用Main
我的表单项目中控制台应用程序的方法。单击按钮即可运行此方法。
这会产生以下错误。
InvalidOperationException 未处理
当任一应用程序没有控制台时无法读取密钥
或者当控制台输入已从文件重定向时。尝试控制台.Read。
private void buttonApplication_Click(object sender, EventArgs e)
{
Ch15Extra_2.Program.Main();
}
以下是方法。
控制台应用程序:
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) { }
如果您需要在没有 WinForms 应用程序的情况下运行控制台应用程序,并且有时您想在不运行控制台应用程序的情况下执行一些控制台代码,我有一个建议给您:
您可以将解决方案分为三个部分。
- WinForms部分
- 控制台部分
- DLL 库。
将 dll 链接到第一个和第二个项目。
然后,如果您需要从 WinForms 应用程序运行共享代码,您可以执行以下操作:
private void buttonApplication_Click(object sender, EventArgs e)
{
var shared = new SharedClass();
shared.Run();
}
SharedClass
将在第三个项目中实施。
您也可以从控制台应用程序调用它。
upd
项目 1:类库。
public class SharedClass
{
public int DoLogic(int x)
{
return x*x;
}
}
项目 2.WinForms。参考项目1
使用共享;
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();
}
}
}
项目 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();
}
}
我刚刚检查过 - 它有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)