gpt4 book ai didi

c# - 同时运行两个winform窗口

转载 作者:IT王子 更新时间:2023-10-29 04:41:43 27 4
gpt4 key购买 nike

我有两个 C# winform (.NET 4.0) 表单,每个表单连续运行独立但相似的自动化任务。不同之处在于它们是不同的流程/工作流,但在它们如何操作以共享项目中的相同资源(方法、数据模型、程序集等)方面足够相似。

两种形式都已完成,但现在我不确定如何运行该程序,以便每个窗口在启动时打开并独立运行。该程序在部署时将“始终在线”。

这可能看起来有点基础,但我的大部分开发经验都是网络应用程序。线程/等等对我来说还是有点陌生​​。我进行了研究,但我发现的大部分答案都与用户交互和顺序用例有关——这只是一个系统,它会持续运行两个不同的进程,这将需要独立地与世界交互。

我发现的潜在解决方案可能涉及多线程,或者某种 MDI,或者一些人建议使用 DockPanelSuite(尽管在 super 企业环境中,下载第三方文件说起来容易做起来难) .

static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

// Rather than specifying frmOne or frmTwo,
// load both winforms and keep them running.
Application.Run(new frmOne());
}
}

最佳答案

您可以创建一个新的 ApplicationContext 来表示多种形式:

public class MultiFormContext : ApplicationContext
{
private int openForms;
public MultiFormContext(params Form[] forms)
{
openForms = forms.Length;

foreach (var form in forms)
{
form.FormClosed += (s, args) =>
{
//When we have closed the last of the "starting" forms,
//end the program.
if (Interlocked.Decrement(ref openForms) == 0)
ExitThread();
};

form.Show();
}
}
}

使用它你现在可以写:

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MultiFormContext(new Form1(), new Form2()));

关于c# - 同时运行两个winform窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15300887/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com