在这里完成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线程外执行主应用程序循环的正确方法是什么?
谢谢!
答案 0 :(得分:2)
您可以使用Thread.Start
命名空间中的System.Threading
。但是,如果要从工作线程更新UI,这些最简单的方法是使用BackgroudWorker
命名空间中的System.ComponentModel
。