C# - 带 GUI 的后台应用程序
C# - Background application with GUI
我的问题是我想创建一个后台应用程序,但它的用户界面可以恢复并最小化到系统托盘,它以 windows 开头。我尝试搜索如何开始,但我只找到了关于 Windows 服务的线程,没有 UI 或创建表单并隐藏它。所以我的问题是我应该如何开始? Windows 表格?服务并以某种方式添加接口?
谢谢!
如果您希望您的应用程序在用户登录时启动,那么创建一个表单并将其隐藏是可行的方法。
如果您希望您的代码 运行 即使没有用户登录,那么您将需要 windows 服务。
如果您选择沿着这条路走下去,您很可能希望拥有一个能够以某种方式与您的服务交互的应用程序。
这是一种创建不绑定到表单的应用程序的方法。使用标准 WinForms 项目,但将 ApplicationContext 的自定义实现传递给 Application.Run()
:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyContext());
}
}
public class MyContext : ApplicationContext
{
public MyContext()
{
// this is the new "entry point" for your application
// use Application.Exit() to shut down the application
// you can still create and display a NotifyIcon control via code for display in the tray
// (the icon for the NotifyIcon can be an embedded resource)
// you can also display forms as usual when necessary
}
}
我的问题是我想创建一个后台应用程序,但它的用户界面可以恢复并最小化到系统托盘,它以 windows 开头。我尝试搜索如何开始,但我只找到了关于 Windows 服务的线程,没有 UI 或创建表单并隐藏它。所以我的问题是我应该如何开始? Windows 表格?服务并以某种方式添加接口?
谢谢!
如果您希望您的应用程序在用户登录时启动,那么创建一个表单并将其隐藏是可行的方法。
如果您希望您的代码 运行 即使没有用户登录,那么您将需要 windows 服务。
如果您选择沿着这条路走下去,您很可能希望拥有一个能够以某种方式与您的服务交互的应用程序。
这是一种创建不绑定到表单的应用程序的方法。使用标准 WinForms 项目,但将 ApplicationContext 的自定义实现传递给 Application.Run()
:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyContext());
}
}
public class MyContext : ApplicationContext
{
public MyContext()
{
// this is the new "entry point" for your application
// use Application.Exit() to shut down the application
// you can still create and display a NotifyIcon control via code for display in the tray
// (the icon for the NotifyIcon can be an embedded resource)
// you can also display forms as usual when necessary
}
}