C # запустить процесс, не останавливая графический интерфейс моего приложения - PullRequest
1 голос
/ 05 мая 2010

Я хочу запустить процесс (вызов другой программы), в настоящее время внешняя программа требует времени (это нормально)!

но он замораживает мой графический интерфейс Я видел много примеров, и я учусь, это трудно понять, пытаюсь читать и изучать потоки, но это не так просто (по крайней мере, для меня) и хороший простой учебник или пример кода?

ура

Ответы [ 3 ]

6 голосов
/ 05 мая 2010

Вот ссылка, показывающая, как использовать асинхронный метод. http://www.codeproject.com/KB/cs/AsyncMethodInvocation.aspx

Вы можете использовать асинхронный метод для запуска процесса, и он не остановит графический интерфейс при запуске.

void Your_Method()
{
   //Start process here
}


MethodInvoker myProcessStarter= new MethodInvoker(Your_Method);

myProcessStarter.BeginInvoke(null, null);

MethodInvoker Описание

1 голос
/ 05 мая 2010

Используйте это:

объявить сверху:

BackgroundWorker backgroundWorker1 = new System.ComponentModel.BackgroundWorker();

затем в form_load:

          backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
            backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
            backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);

после чего:

backgroundWorker1.RunWorkerAsync(someArg); // this calls  backgroundWorker1_DoWork(....


    // This event handler is where the actual,
    // potentially time-consuming work is done.
    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
    }
1 голос
/ 05 мая 2010

BackgroundWorker был разработан именно для такого сценария.

См. MSDN .

Он предоставляет полезные методы для сигнализации (в обоих направлениях), которые не требуют от васчтобы маршалл перезванивал в поток пользовательского интерфейса.

Или используйте параллельная библиотека задач ...

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