在这里完成 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);
}
}
为了以隐藏的形式运行。主应用程序周期发生在表单 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 线程之外执行主应用程序循环的正确方法是什么?
谢谢!