带有守护进程的c#托盘图标应用程序
本文关键字:托盘图标 应用程序 进程 守护 | 更新日期: 2023-09-27 18:19:09
这是一个完整的c#新手,所以放我一马吧。
我有这个应用程序将驻留在托盘上。当我点击托盘时,我想访问一个"设置"表单。这是所有编码和工作
然而,这个应用程序的主要功能是连接到一个用node.js编写的应用程序,并继续轮询要做的事情。
这也是编码和工作,但是有一个(可怕的)警告。
主类是这样做的:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 form = new Form1();
ApplicationContext applicationContext = new ApplicationContext();
applicationContext.MainForm = form;
Application.Run(applicationContext);
}
}
为了在隐藏表单的情况下运行。主要的应用周期发生在form Load事件中:
private void Form1_Load(object sender, EventArgs e)
{
string basePath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Personal),
"ArchSync"
);
if (!Directory.Exists(basePath)) {
Directory.CreateDirectory(basePath);
}
WebClient client = new WebClient();
Int64 timestamp = 0;
while (true)
{
// main app loop
}
}
不用说,这个应用程序可以工作,但是托盘图标什么也不做,因为主线程正忙于HTTP交互。
在UI线程外执行主应用程序循环的正确方法是什么?
谢谢!
可以使用System.Threading
命名空间中的Thread.Start
。但是如果你想从工作线程更新UI,最简单的方法是使用System.ComponentModel
命名空间中的BackgroudWorker
。