C # не событие - PullRequest
       31

C # не событие

1 голос
/ 28 декабря 2010

У меня проблема - в моей программе после нажатия кнопки меню я использую void что-то:

    private void aToolStripMenuItem_Click(object sender, EventArgs e)
    {
        something(sender, e);
    }

Эта функция работает долго, поэтому мое приложение больше ничего не может сделать в это время.Что я могу сделать?

Но если я использую folderBrowserDialog в функции что-то, и я использую selectedpath из него в другой функции?

Ответы [ 3 ]

7 голосов
/ 28 декабря 2010

Использование компонента BackgroundWorker .

2 голосов
/ 28 декабря 2010

Вам, вероятно, стоит познакомиться с BackgroundWorker

Помимо MSND Threading в C # Джозефа Албахари - отличный ресурс

1 голос
/ 28 декабря 2010

Проблема заключается в том, что код, выполняющий 'что-то', находится в потоке пользовательского интерфейса , который отвечает за обработку рисования, щелчков мыши и т. Д. Если вы хотите, чтобы пользовательский интерфейс реагировал, пока ваша программа работает обрабатывая «что-то», вам нужно, чтобы это происходило в другом потоке. (Чтобы поток пользовательского интерфейса мог выполнять свою работу.)

BackgroundWorker - хороший способ решить эту проблему. Я бы порекомендовал: ThreadPool.QueueUserWorkItem

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