运行 一个 windows 表单,而我的控制台应用程序仍然 运行
Run a windows form while my console application still running
我是 C# 编程的新手,我迷失了一个可能很简单的东西。
正在执行控制台应用程序,此时我需要调用一个 Windows 表单来显示执行的静态信息,但是当我调用 form1.ShowDialog(); 时这会停止控制台运行时。
如何在显示 Windows 表单屏幕时保持控制台执行活动?
class Program
{
static Form1 form = new Form1();
public static bool run = true;
static void Main(string[] args)
{
work();
}
public static void work()
{
form.Show();
while (run)
{
Console.WriteLine("Console still running");
}
}
}
参见this question。您必须使用 Form1.Show()
因为 Form1.ShowDialog()
暂停执行直到表单关闭。
更新 这似乎有效(Application.Run):-
public static Form1 form = new Form1();
public static bool run = true;
[MTAThread]
static void Main(string[] args)
{
new Thread(() => Application.Run(form)).Start();
new Thread(work).Start();
}
public static void work()
{
while (run)
{
Console.WriteLine("Console Running");
}
}
试试这个对我有用
using System.Windows.Forms;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
public static bool run = true;
static void Main(string[] args)
{
Startthread();
Application.Run(new Form1());
Console.ReadLine();
}
private static void Startthread()
{
var thread = new Thread(() =>
{
while (run)
{
Console.WriteLine("console is running...");
Thread.Sleep(1000);
}
});
thread.Start();
}
}
}
线程就像我自己的理解"process inside a process"。
我是 C# 编程的新手,我迷失了一个可能很简单的东西。
正在执行控制台应用程序,此时我需要调用一个 Windows 表单来显示执行的静态信息,但是当我调用 form1.ShowDialog(); 时这会停止控制台运行时。
如何在显示 Windows 表单屏幕时保持控制台执行活动?
class Program
{
static Form1 form = new Form1();
public static bool run = true;
static void Main(string[] args)
{
work();
}
public static void work()
{
form.Show();
while (run)
{
Console.WriteLine("Console still running");
}
}
}
参见this question。您必须使用 Form1.Show()
因为 Form1.ShowDialog()
暂停执行直到表单关闭。
更新 这似乎有效(Application.Run):-
public static Form1 form = new Form1();
public static bool run = true;
[MTAThread]
static void Main(string[] args)
{
new Thread(() => Application.Run(form)).Start();
new Thread(work).Start();
}
public static void work()
{
while (run)
{
Console.WriteLine("Console Running");
}
}
试试这个对我有用
using System.Windows.Forms;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
public static bool run = true;
static void Main(string[] args)
{
Startthread();
Application.Run(new Form1());
Console.ReadLine();
}
private static void Startthread()
{
var thread = new Thread(() =>
{
while (run)
{
Console.WriteLine("console is running...");
Thread.Sleep(1000);
}
});
thread.Start();
}
}
}
线程就像我自己的理解"process inside a process"。