Загрузка формы в другой теме в .Net 2.0? - PullRequest
2 голосов
/ 19 марта 2011

Итак, у меня есть простое консольное приложение:

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using FormLoader;

namespace FormLoaderTest
{
    class Program
    {
        static void Main(string[] args)
        {
            FormLoaderClass.Load();

            while (true)
            {
                Console.Write(".");
                Thread.Sleep(17);
            }
        }
    }
}

Это класс FormLoaderClass:

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;

namespace FormLoader
{
    public class FormLoaderClass
    {
        public void Load()
        {
            new ModLoaderWindow().Show();
        }
    }
}

Второй проект - это еще одна DLL, на которую ссылается консольное приложение. Моя проблема в том, что форма показана, но заморожена, в то время как консольное приложение успешно пишет точки в окне консоли.

Что я могу сделать, чтобы окно консоли продолжало писать точки, и взаимодействие с пользователем по-прежнему возможно? Я думал о каком-то потоке, но это не помогло. Он либо отображал форму только при первом рисовании, либо постоянно зависал.

1 Ответ

4 голосов
/ 19 марта 2011

Он зависает, потому что для формы нужна очередь сообщений - для этого Application.Run(Form f).Однако этот вызов блокируется, поэтому для его запуска вам обязательно понадобится второй поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...