Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WCF's Background thread. Запустить получается, но остановить нет 
:(
    Опции темы
SoulB
Дата 16.9.2009, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.9.2009

Репутация: нет
Всего: нет



Все думал в какую категорию запостить тему. Сочетание двух, так скажем.

В WCFе имеются два OperationContract'а - Start и Stop.
При Start запускается Mutex и с промежутком времени в фоне отправляются письма. Запуск работает, поток работает постоянно. Когда я вызываю Stop, ищу работающий семафор - находит. Но поток не могу остановить. Дело в том, что этот поток найти не может. Пример:

Код
     
        Mutex mutex = null;
        Thread mailingProcess;
        SmtpClient smtpClient = new SmtpClient();

        public void Start()
        {
            try
            {
                mutex = Mutex.OpenExisting("subscribe");
            }

            catch (WaitHandleCannotBeOpenedException ex)
            {
       
            }

            if (mutex == null)
            {
                mutex = new Mutex(false, "subscribe");
                mailingProcess = new Thread(new ThreadStart(SendMailByTimer));
                mailingProcess.Start();
            }
        }

        public void Stop()
        {          
            Mutex.OpenExisting("subscribe").Close(); 
        }

      void SendMailByTimer()
        {           
            while (!Mutex.OpenExisting("subscribe").SafeWaitHandle.IsClosed)
            {
                     //TO DO Some             
            }

       throw new Exception("Thread stoped");
        }



Как я понял получается так, что когда я вызываю Stop, то операция запускается в другом потоке, и тот поток, который запустился при Start'е не видит. Mutex хоть и закрываю, но он все же оставил свои свойства в первом потоке. Головоломка вообщем. Решение?
PM MAIL WWW   Вверх
PashaPash
Дата 16.9.2009, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 6
Всего: 49



SoulB, используй события (AutoResetEvent) для уведомления потока об остановке.


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.