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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование класса Mutex, выскакивает исключение 
:(
    Опции темы
Madstar
Дата 25.12.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброе время суток!
Вобщем изучаню синхронизацию потоков в C#, дошел до метода Mutex()
В самоучителе есть пример:
Код

using System;
using System.Threading;

namespace MutexDemo
{
    class NumberWriter
    {
        Mutex mutex;

        public NumberWriter()
        {
            mutex = new Mutex(false, "MutexDemoAppMutex");
        }

        public void WriteThread()
        {
            mutex.WaitOne();
            for (int i = 0; i < 0; i++)
            {
                Console.Write("{0}.", i);
                Thread.Sleep(100);
            }
            mutex.Close();
        }
    }
    class MutexDemoApp
    {
        [STAThread]
        static void Main(string[] args)
        {
            NumberWriter nw = new NumberWriter();

            Thread thr1 = new Thread(new ThreadStart(nw.WriteThread));
            Thread thr2 = new Thread(new ThreadStart(nw.WriteThread));

            thr1.Start();
            thr2.Start();

            Console.ReadLine();
        }
    }
}

при работе программы выскакивает исключение: ObjectDisponsedException
подскажите что тут не так?
PM MAIL   Вверх
tol05
Дата 25.12.2009, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

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



первый поток заходит в метод и по окончанию своей работы закрывает Mutex. Соответственно второй поток не может обращаться к закрытому Mutex-су
вместо          mutex.Close();
используйте  mutex.ReleaseMutex();


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Madstar
Дата 28.12.2009, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



благодарю)
PM MAIL   Вверх
jonie
Дата 28.12.2009, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



насколько мне не изменяет память, именованные мьютексы это интерпроцессинговая вещь. Т.е. мало того что ваши потоки будут видеть этот мьютекс, так еще и другие приложения его видеть будут, что зачастую нежелательно....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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