Поток и предложение по чтению базы данных - PullRequest
0 голосов
/ 28 июня 2011

У меня проблема с моим текущим приложением .net, и вот что, когда строка базы данных обновляется или вставляется новая строка, моя служба .net должна прочитать эти изменения и отправить заказ на печать.

Я реализовал следующие функции:

public void OnStart()
{
   ThreadMgmt pthread = new ThreadMgmt();
   pthread.printNotification += new pthread.DatabaseChanged();
   pthread.frequency = 2000;

   ThreadStart ts = new ThreadStart(pthread.Wait);
   Thread t = new Thread(ts);

   t.Start();
}

void ReadDataBase() {...}

void Printing(){...}

public class ThreadMgmt 
{
  public delegate void UpdateDelegate();

  public event UpdateDelegate Notify;

  private int frequency {set;get;}


     public void Wait()
     {
        for (int i = 0; i <= Freq; i++)
        {
           Thread.Sleep(this.frequncy);
           Notify();
        }
     }
}

Но мне нужна некоторая помощь по понятиям о потоке и зацикливании событий, я хотел бы знать, сталкивается ли кто-нибудь с такой же проблемой и как ее решить...

Спасибо

1 Ответ

1 голос
/ 28 июня 2011

Вот простое решение.

     private bool m_stop;
     public void Stop ()
     {
        lock (this)
           m_stop = true;
     }

     public void Wait()
     {
        for (int i = 0; i <= Freq; i++)
        {
           lock (this)
           {
              if (m_stop)
                 return;
           }
           Thread.Sleep(this.frequncy);
           if (Notify != null)
              Notify();
        }
     }

Если вы хотите, чтобы отключение происходило быстрее, вы можете использовать Monitor.Wait и Monitor.PulseAll, но вы должны прочитать об этом, прежде чем решите это сделать.

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