Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 28.07.2018, 10:08   #1
Koldun90
 
Регистрация: 16.05.2014
Сообщений: 7
Репутация: 10
По умолчанию Запуск Process Операция асинхронного чтения для потока уже запущена

Здравствуйте Программа такая(С++ WINFORMS) есть кнопка button и есть textbox
при нажатии на кнопку выполняется вызов ipconfig , читается вывод который попадает в text box.

Проблема в следующем запускаю программу. Нажимаю кнопку. вывод ip config приходит.
Нажимаю второй раз кнопку вывод не приходит и пишется "Операция асинхронного чтения для потока уже запущена"
(Второй и каждый последующий разы так)
Вот вопрос как этого избежать?

Код:

//клик по кнопке
private: System::Void sendingfilesandfolders(System::Object^  sender, System::EventArgs^  e)
    { 
        
        send->StartInfo->FileName = "ipconfig";
        send->StartInfo->UseShellExecute = false;
        send->StartInfo->RedirectStandardOutput = true;
        send->StartInfo->CreateNoWindow = true;
        send->Start();
        send->BeginOutputReadLine();
}
 
//Обработчик прихода данных на стандартный вывод
private: System::Void readdataprocess(System::Object^  sender, System::Diagnostics::DataReceivedEventArgs^  e)
{
    if (e->Data!=nullptr)
        textBox1->AppendText(e->Data);
    
}

Изображения
Тип файла: png potokerrroo.png (17.4 Кб, 13 просмотров)

Последний раз редактировалось Koldun90; 28.07.2018 в 10:14.
Koldun90 вне форума   Ответить с цитированием
Старый 28.07.2018, 10:29   #2
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,570
Репутация: 1777
По умолчанию

Создайте новый send объект.
waleri вне форума   Ответить с цитированием
Старый 28.07.2018, 10:58   #3
Koldun90
 
Регистрация: 16.05.2014
Сообщений: 7
Репутация: 10
По умолчанию

send-- это у меня элемент process который я добавлял из панели элементов
Koldun90 вне форума   Ответить с цитированием
Старый 28.07.2018, 11:04   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,375
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

Просто создайте новый объект через gcnew или как там в С++ CLR. Тут совсем не нужен дизайнер.
Alex11223 на форуме   Ответить с цитированием
Старый 28.07.2018, 11:07   #5
Koldun90
 
Регистрация: 16.05.2014
Сообщений: 7
Репутация: 10
По умолчанию

я понял попробую
Koldun90 вне форума   Ответить с цитированием
Старый 28.07.2018, 11:22   #6
Koldun90
 
Регистрация: 16.05.2014
Сообщений: 7
Репутация: 10
По умолчанию

изменил код на такой

Код:

//клик по кнопке
private: System::Void sendingfilesandfolders(System::Object^  sender, System::EventArgs^  e)
{ 
        System::Diagnostics::Process^ pr=gcnew System::Diagnostics::Process();
		pr->OutputDataReceived += gcnew System::Diagnostics::DataReceivedEventHandler(this, &MyForm::readdataprocess);
		pr->StartInfo->FileName = "ipconfig";
		pr->StartInfo->UseShellExecute = false;
		pr->StartInfo->RedirectStandardOutput = true;
		pr->StartInfo->CreateNoWindow = true;
		pr->EnableRaisingEvents = false;
		pr->Start();
		pr->BeginOutputReadLine();  
 }

В таком случае утечек памяти не будет?

Последний раз редактировалось Koldun90; 28.07.2018 в 11:25.
Koldun90 вне форума   Ответить с цитированием
Старый 28.07.2018, 12:24   #7
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,375
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

нет
https://en.wikipedia.org/wiki/Garbag...mputer_science)
Alex11223 на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что происходит если для потока уже вызвали pthread_join? WolfEater Помощь студентам 1 24.04.2016 08:39
запуск потока из таймера, как? buket Общие вопросы Delphi 6 16.12.2011 11:36
Запуск таймера из потока (delphi 2010) Terikon Общие вопросы Delphi 10 07.08.2010 18:09
(process.h) Компилятор говорит Process не объявлен Парсифаль Общие вопросы C/C++ 0 15.02.2010 01:27
Управление потоками. Запуск, остановка, приоритет потока. metamfetamin Помощь студентам 5 11.11.2007 13:45


23:08.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru