Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
36 / 36 / 4
Регистрация: 27.05.2012
Сообщений: 174
Записей в блоге: 5
1

Ошибка приостановления потока

26.03.2013, 12:15. Показов 896. Ответов 6
Метки нет (Все метки)

Везде юзаю такую конструкцию
C#
1
2
if(_thread != null)
      _thread.Suspend();
При этом если поток до этого не был запущен, то выкидывает эксепшн "Поток не запущен, не может быть приостановлен."
Ну почему? я же везде проверку условия делаю..
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2013, 12:15
Ответы с готовыми решениями:

Ошибка доступа к Button из потока
есть главный поток и 1 дополнительный. private void checkForSettings() { ...

Ошибка при записи в файл с потока
Команда 1 зачем-то стала выводить значения, которые я записываю с потока в файл. Раньше же, когда я...

Ошибка при создании потока с параметрами
есть следующий метод, а в нем используется другой метод: /// <summary> /// изменить...

Сокеты, ошибка доступа к элементу управления из потока
Здравствуйте. Такая проблема: использую сокеты для передачи текстовой информации, после получения,...

6
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
26.03.2013, 12:25 2
Цитата Сообщение от vladimir8686 Посмотреть сообщение
Везде юзаю такую конструкцию
C#
1
2
if(_thread != null)
      _thread.Suspend();
При этом если поток до этого не был запущен, то выкидывает эксепшн "Поток не запущен, не может быть приостановлен."
Ну почему? я же везде проверку условия делаю..
надо проверять на Thread.ThreadState
0
36 / 36 / 4
Регистрация: 27.05.2012
Сообщений: 174
Записей в блоге: 5
26.03.2013, 12:44  [ТС] 3
Все равно таже ошибка

C#
1
2
3
4
5
6
7
8
9
10
ThreadState _threadState;
 
void StartToolStripMenuItemClick(object sender, EventArgs e)
{   
     _thread.Start();
     _threadState = ThreadState.Running;
}
 
if(_threadState == ThreadState.Running)
   _thread.Suspend();
0
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
26.03.2013, 12:49 4
Цитата Сообщение от vladimir8686 Посмотреть сообщение
Все равно таже ошибка

C#
1
2
3
4
5
6
7
8
9
10
ThreadState _threadState;
 
void StartToolStripMenuItemClick(object sender, EventArgs e)
{   
     _thread.Start();
     _threadState = ThreadState.Running;
}
 
if(_threadState == ThreadState.Running)
   _thread.Suspend();
Выложите весь код
0
36 / 36 / 4
Регистрация: 27.05.2012
Сообщений: 174
Записей в блоге: 5
26.03.2013, 12:54  [ТС] 5
Солюшн
Вложения
Тип файла: zip MiniGame1 - mine.zip (974.2 Кб, 2 просмотров)
0
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
26.03.2013, 13:10 6
1) Если вы хотите запускать поток много раз без ошибок - _thread.Start(); нужно убрать, и вместо него сделать полную пере-инициализацию (_thread = new Thread(...)). ThreadState меняется автоматически.
2) В вашем случае стоит попробовать только Application.Exit()
0
Администратор
Эксперт .NET
9197 / 4480 / 750
Регистрация: 17.04.2012
Сообщений: 9,276
Записей в блоге: 14
26.03.2013, 13:13 7
Перечисление ThreadState отмечено атрибутом Flags, а значит оно может использовать комбинации членов, например:
C#
1
ThreadState state = ThreadState.Running | ThreadState.AbortRequested;
Воспользуйтесь свойством IsAlive
C#
1
2
if(_thread.IsAlive)
      _thread.Suspend();
Вот для чего придуман MSDN.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2013, 13:13

Клиент-серверное приложение и ошибка прерывания потока
запускаем сервер IPAddress localhost = IPAddress.Parse(myIp); listener = new...

Ошибка при создании потока - Несколько недопустимых аргументов
namespace WindowsFormsApplication17 { public partial class Form1 : Form { ...

Записать число в начало потока вернувшись с конца потока после записи нескольких элементов...
public static void Save(List<SomeClass> listSC, String fileName) { using...

Как из одного потока узнать состояние другого потока
Подскажите пожалуйста, как из одного потока узнать, что другой поток еще не запущен. Например,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru