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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многопоточность, Возникает ошибка при закрытии формы 
V
    Опции темы
ura1234
  Дата 11.1.2010, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



При закрытии формы возникает Exception "Доступ к ликвидированному объекту невозможен."
В чем может быть дело и как решить эту проблему?
Код

namespace test_thread
{
    public partial class Form1 : Form
    {
        private delegate void ShowProgressDelegate(string a);
        public Form1()
        {
            InitializeComponent();
            Thread t = new Thread(new ThreadStart(Work));
            t.Start();  
        }

         void ShowProgress(string a)
        {
            richTextBox1.AppendText(a+"\n");                                  
        }

        void Work()
        {
            bool b = true;

            ShowProgressDelegate showProg = new ShowProgressDelegate(ShowProgress);
            string a = "Пишем";

            while (b)
            {
                this.Invoke(showProg, new object[] { a }); //Доступ к ликвидированному объекту невозможен.
                Thread.Sleep(100);
            }
        }                  
    }
}


PM MAIL   Вверх
Dobermann
Дата 11.1.2010, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А ты попробуй по-человечески этот код переписать, как это майкрософт рекомендует!
PM   Вверх
tol05
Дата 12.1.2010, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(ura1234 @  11.1.2010,  18:40 Найти цитируемый пост)
В чем может быть дело и как решить эту проблему?

нужно просто почитать о работе с потоками

Код

public partial class Form1 : Form
    {
        private delegate void ShowProgressDelegate(string a);
        public Form1()
        {
            InitializeComponent();
            
        }
        void ShowProgress(string a)
        {
            richTextBox1.AppendText(a + "\n");
        }

        void Work()
        {
            bool b = true;
            ShowProgressDelegate showProg = new ShowProgressDelegate(ShowProgress);
            string a = "Пишем";
            while (b)
            {
                this.Invoke(showProg, new object[] { a }); //Доступ к ликвидированному объекту невозможен.
                Thread.Sleep(100);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            t = new Thread(new ThreadStart(Work));
            t.Start();
        }

        private Thread t;

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            t.Abort();
            t.Join();
        }
    }



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


Новичок



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

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



Большое спасибо, все заработало!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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