Как использовать длительный процесс в Winforms C # - PullRequest
1 голос
/ 18 марта 2012

Я использую фон для своего приложения смс.

Я создал приложение, которое должно непрерывно отправлять сообщения.

Когда я использую background.My приложение зависает, я не знаю, почему это так,

мой код

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
   //mycode
}

private void backgroundWorker1_RunWorkerCompleted(
    object sender, RunWorkerCompletedEventArgs e)
{
    backgroundWorker1.CancelAsync();
    backgroundWorker1.RunworkAsync();
}

позже я попробовал это

public void Thread()
{
    Thread D = new Thread(BackgroundCode);
    D.Start();
}

public void BackgroundCode()
{
    for (int i5 = 1; i5 > 0; i5 += 1)
    {
       //mycode
    }

}

эти два прекрасно работают в течение 2 или 3 минут, но после этого они зависают.

Пожалуйста, может кто-нибудь, пожалуйста, помогите мне.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 18 марта 2012

попробуйте

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
   while(true)
   {
       //your sms code
       //call CancelAsync() here if you want to get out!!!!
   }
}

private void backgroundWorker1_RunWorkerCompleted(
    object sender, RunWorkerCompletedEventArgs e)
{
   //donot include RunWorkerAsync() and CancelAsync() in this method!
}
0 голосов
/ 18 марта 2012

Это длинный пост , но, похоже, он вполне подходит для вашей проблемы.

В основном, это показывает, как вы можете сделать это с помощью BackgroundWorker или библиотеки параллельных задач (TPL будет моим предложением)

Для TPL вы создаете класс ProgressReporter, который будет использоваться в классе для передачи сообщений обратно в основной поток, продолжая при этом запускать задачу.

Кроме того, ваш цикл for никогда не закончится, потому что он говорит, что работает, пока i5 больше 0. И он начинается с 1 и начинает отсчитываться, поэтому он никогда не будет меньше или равен нулю. Это исправит ваше зависание, но как только вы исправите это, репортер прогресса из класса блогов должен помочь с остальными.

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