полная_остановка_кода_С#
От: slavenin137  
Дата: 29.09.08 18:07
Оценка:
Добрый день!
Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?
т.е.
...
...
if (...) { СТОП!; }
Re: полная_остановка_кода_С#
От: samius Япония http://sams-tricks.blogspot.com
Дата: 29.09.08 18:09
Оценка: 3 (1)
Здравствуйте, slavenin137, Вы писали:

S>Добрый день!

S>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?
S>т.е.
S>...
S>...
S>if (...) { СТОП!; }
Устроить deadlock )))
Re: полная_остановка_кода_С#
От: nikov США http://www.linkedin.com/in/nikov
Дата: 29.09.08 18:14
Оценка: 15 (2) +1
Здравствуйте, slavenin137, Вы писали:

S>Добрый день!

S>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?

System.Environment.FailFast(null);


или

System.Diagnostics.Process.GetCurrentProcess().Kill(); // требует ссылки на System.dll
Re: полная_остановка_кода_С#
От: nikov США http://www.linkedin.com/in/nikov
Дата: 29.09.08 18:24
Оценка: 11 (3) +1
Здравствуйте, slavenin137, Вы писали:

S>Добрый день!

S>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?

Еще есть способы:

1)
System.Environment.Exit(0);

но при этом будут выполняться финализаторы (но не finally блоки)

2)
System.Threading.Thread.CurrentThread.Abort();

прерывается только текущий поток, блокм finally выполняются.

3)
System.AppDomain.Unload(System.AppDomain.CurrentDomain);

выгружает целиком домен приложения, прерывая все потоки в нем, но не может использоваться в основном домене.
Re: полная_остановка_кода_С#
От: nikov США http://www.linkedin.com/in/nikov
Дата: 29.09.08 18:28
Оценка: 3 (1)
Здравствуйте, slavenin137, Вы писали:

S>Добрый день!

S>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?

Ну и наконец, если надо остановить выполнение кода, а не прервать его, то можно использовать

System.Threading.Thread.Sleep(-1);
Re[2]: полная_остановка_кода_С#
От: slavenin137  
Дата: 29.09.08 18:31
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, slavenin137, Вы писали:


S>>Добрый день!

S>>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?

N>Еще есть способы:


N>1)

N>
N>System.Environment.Exit(0);
N>

N>но при этом будут выполняться финализаторы (но не finally блоки)

N>2)

N>
N>System.Threading.Thread.CurrentThread.Abort();
N>

N>прерывается только текущий поток, блокм finally выполняются.

N>3)

N>
N>System.AppDomain.Unload(System.AppDomain.CurrentDomain);
N>

N>выгружает целиком домен приложения, прерывая все потоки в нем, но не может использоваться в основном домене.

nikov, описанные вами методы полностью закрывают программу, а как сделать так чтобы форма оставалась на экране — но код не выполнялся — а начинал выполняться только при нажатии button
Re[2]: полная_остановка_кода_С#
От: slavenin137  
Дата: 29.09.08 18:34
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, slavenin137, Вы писали:


S>>Добрый день!

S>>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?

N>Ну и наконец, если надо остановить выполнение кода, а не прервать его, то можно использовать


N>
N>System.Threading.Thread.Sleep(-1);
N>

при использовании данного способа программа виснет наглухо..
посоветуйте ещё что нибудь.. пока что ни что не подходит...
Re[3]: полная_остановка_кода_С#
От: nikov США http://www.linkedin.com/in/nikov
Дата: 29.09.08 18:36
Оценка:
Здравствуйте, slavenin137, Вы писали:

S>nikov, описанные вами методы полностью закрывают программу, а как сделать так чтобы форма оставалась на экране — но код не выполнялся — а начинал выполняться только при нажатии button


Может быть, тогда лучше поместить этот код в обработчик события кнопки?
Re[3]: полная_остановка_кода_С#
От: nikov США http://www.linkedin.com/in/nikov
Дата: 29.09.08 18:41
Оценка:
Здравствуйте, slavenin137, Вы писали:

S>при использовании данного способа программа виснет наглухо..

S>посоветуйте ещё что нибудь.. пока что ни что не подходит...

Если нужно управлять взаимодействием нескольких потоков (один поток ждет, пока другой сделает что-нибудь), то нужно смотреть классы:

System.Threading.Monitor
System.Threading.ReaderWriterLock
System.Threading.ReaderWriterLockSlim // в сборке System.Core.dll
System.Threading.WaitHandle 
System.Threading.ManualResetEvent
System.Threading.AutoResetEvent
Re[4]: полная_остановка_кода_С#
От: slavenin137  
Дата: 29.09.08 18:44
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, slavenin137, Вы писали:


S>>nikov, описанные вами методы полностью закрывают программу, а как сделать так чтобы форма оставалась на экране — но код не выполнялся — а начинал выполняться только при нажатии button


N>Может быть, тогда лучше поместить этот код в обработчик события кнопки?

нет, так не надо...
запустил форму — в ней происходит выполнения кода после нажатия кнопки. при определенных обстоятельствах выскакивает вторая форма с двумя кнопками ок и отмена. если нажал ок — то все пошло дальше — если нажал отмена — то главная форма остается открытой и бездействует, а вспомогательная формочка закрывается.
Re[5]: полная_остановка_кода_С#
От: Константин Л.  
Дата: 29.09.08 18:51
Оценка:
Здравствуйте, slavenin137, Вы писали:

S>Здравствуйте, nikov, Вы писали:


N>>Здравствуйте, slavenin137, Вы писали:


S>>>nikov, описанные вами методы полностью закрывают программу, а как сделать так чтобы форма оставалась на экране — но код не выполнялся — а начинал выполняться только при нажатии button


N>>Может быть, тогда лучше поместить этот код в обработчик события кнопки?

S>нет, так не надо...
S>запустил форму — в ней происходит выполнения кода после нажатия кнопки. при определенных обстоятельствах выскакивает вторая форма с двумя кнопками ок и отмена. если нажал ок — то все пошло дальше — если нажал отмена — то главная форма остается открытой и бездействует, а вспомогательная формочка закрывается.

сделать второй форме ShowModal? давай конкретнее
Re[4]: полная_остановка_кода_С#
От: Константин Л.  
Дата: 29.09.08 18:51
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, slavenin137, Вы писали:


S>>nikov, описанные вами методы полностью закрывают программу, а как сделать так чтобы форма оставалась на экране — но код не выполнялся — а начинал выполняться только при нажатии button


N>Может быть, тогда лучше поместить этот код в обработчик события кнопки?


сдается мне, что человек под выполнением кода понимает нечто другое.
Re[6]: полная_остановка_кода_С#
От: slavenin137  
Дата: 29.09.08 18:59
Оценка: :)
Здравствуйте, Константин Л., Вы писали:

КЛ>Здравствуйте, slavenin137, Вы писали:


S>>Здравствуйте, nikov, Вы писали:


N>>>Здравствуйте, slavenin137, Вы писали:


S>>>>nikov, описанные вами методы полностью закрывают программу, а как сделать так чтобы форма оставалась на экране — но код не выполнялся — а начинал выполняться только при нажатии button


N>>>Может быть, тогда лучше поместить этот код в обработчик события кнопки?

S>>нет, так не надо...
S>>запустил форму — в ней происходит выполнения кода после нажатия кнопки. при определенных обстоятельствах выскакивает вторая форма с двумя кнопками ок и отмена. если нажал ок — то все пошло дальше — если нажал отмена — то главная форма остается открытой и бездействует, а вспомогательная формочка закрывается.

КЛ>сделать второй форме ShowModal? давай конкретнее


я пытаюсь максимально подробно описать — извините если пудрю мозги))
дело в том что вспомогательная форма вызывается в цикле из главной формы — так как сделать так что бы при:
if (имя_формы.DialogResult == DialogResult.Cancel)
{
// остановить код!!!!! срочно!!!
}
такого метода — ShowModal я не нашел в с#...
Re[7]: полная_остановка_кода_С#
От: samius Япония http://sams-tricks.blogspot.com
Дата: 29.09.08 19:01
Оценка:
Здравствуйте, slavenin137, Вы писали:

S>я пытаюсь максимально подробно описать — извините если пудрю мозги))

S>дело в том что вспомогательная форма вызывается в цикле из главной формы — так как сделать так что бы при:
S>if (имя_формы.DialogResult == DialogResult.Cancel)
S>{
S> // остановить код!!!!! срочно!!!
S>}
S>такого метода — ShowModal я не нашел в с#...

Выйти из цикла чтоли?
break!
Re[8]: полная_остановка_кода_С#
От: slavenin137  
Дата: 29.09.08 19:05
Оценка:
Здравствуйте, samius, Вы писали:

S>Здравствуйте, slavenin137, Вы писали:


S>>я пытаюсь максимально подробно описать — извините если пудрю мозги))

S>>дело в том что вспомогательная форма вызывается в цикле из главной формы — так как сделать так что бы при:
S>>if (имя_формы.DialogResult == DialogResult.Cancel)
S>>{
S>> // остановить код!!!!! срочно!!!
S>>}
S>>такого метода — ShowModal я не нашел в с#...

S>Выйти из цикла чтоли?

S>break!
мужики))) я конечно начинающий пользователь — но не до такой же степени)))
как сделать так чтобы форма бездействовала после нажатия отметы?
чтобы просто остановила все процессы — но не закрывалась при этом.
Re[7]: полная_остановка_кода_С#
От: AngeL B. Россия  
Дата: 29.09.08 19:06
Оценка:
Здравствуйте, slavenin137, Вы писали:

S>if (имя_формы.DialogResult == DialogResult.Cancel)

S>{
S> // остановить код!!!!! срочно!!!
S>}

Можно все таки более пространно о том, что значит "останосить код!!!"?
Какой код надо остановить?
На сколько его надо остановить?
Остановить(приостановить) или прервать(завершить)?
Код находится в текущем потоке или в другом?
Re: полная_остановка_кода_С#
От: TK Лес кывт.рф
Дата: 29.09.08 19:07
Оценка: :))) :)
Здравствуйте, slavenin137, Вы писали:

S>Добрый день!

S>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?
S>т.е.

А если подробнее, какая именно задача?

полностью остановить весь C# код никто не даст — слишком многое на него уже завязано.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[9]: полная_остановка_кода_С#
От: AngeL B. Россия  
Дата: 29.09.08 19:09
Оценка:
Здравствуйте, slavenin137, Вы писали:

S>мужики))) я конечно начинающий пользователь — но не до такой же степени)))

S>как сделать так чтобы форма бездействовала после нажатия отметы?

ты хочешь сказать, что у тебя форма _сама_по_себе_ что-то делает после нажатия отмены?

S>чтобы просто остановила все процессы — но не закрывалась при этом.
Re[7]: полная_остановка_кода_С#
От: stump http://stump-workshop.blogspot.com/
Дата: 29.09.08 19:11
Оценка:
Здравствуйте, slavenin137, Вы писали:

S>>>запустил форму — в ней происходит выполнения кода после нажатия кнопки. при определенных обстоятельствах выскакивает вторая форма с двумя кнопками ок и отмена. если нажал ок — то все пошло дальше — если нажал отмена — то главная форма остается открытой и бездействует, а вспомогательная формочка закрывается.


S>я пытаюсь максимально подробно описать — извините если пудрю мозги))

S>дело в том что вспомогательная форма вызывается в цикле из главной формы — так как сделать так что бы при:
S>if (имя_формы.DialogResult == DialogResult.Cancel)
S>{
S> // остановить код!!!!! срочно!!!
S>}
S>такого метода — ShowModal я не нашел в с#...

Судя по постановке вопроса, вы не в курсе того что такое message loop.
В вашем коде достаточно поставить return и ваша форма будет "бездействовать". Т.е. она не будет выполнять никакого кода, написанного вами, и в тоже время не будет "виснуть намертво".
if (имя_формы.DialogResult == DialogResult.Cancel)
{
    // остановить код!!!!! срочно!!!
      return;
}

Понедельник начинается в субботу
Re[7]: полная_остановка_кода_С#
От: samius Япония http://sams-tricks.blogspot.com
Дата: 29.09.08 19:12
Оценка:
Здравствуйте, slavenin137, Вы писали:

S>такого метода — ShowModal я не нашел в с#...


Form.ShowDialog();
Оно?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.