Приложение C# Tray Icon с демоном

Закончите новичка на 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-взаимодействием.

Как правильно выполнить основной цикл приложения вне потока пользовательского интерфейса?

Спасибо!

1 ответ

Решение

Ты можешь использовать Thread.Start от System.Threading Пространство имен. Но если вы хотите обновить пользовательский интерфейс из рабочего потока, самый простой способ сделать это - использовать BackgroudWorker от System.ComponentModel Пространство имен.

Другие вопросы по тегам