Здравствуйте, slavenin137, Вы писали:
S>Добрый день! S>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось? S>т.е. S>... S>... S>if (...) { СТОП!; }
Устроить deadlock )))
Здравствуйте, slavenin137, Вы писали:
S>Добрый день! S>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?
System.Environment.FailFast(null);
или
System.Diagnostics.Process.GetCurrentProcess().Kill(); // требует ссылки на System.dll
Здравствуйте, slavenin137, Вы писали:
S>Добрый день! S>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?
Еще есть способы:
1)
System.Environment.Exit(0);
но при этом будут выполняться финализаторы (но не finally блоки)
2)
System.Threading.Thread.CurrentThread.Abort();
прерывается только текущий поток, блокм finally выполняются.
Здравствуйте, slavenin137, Вы писали:
S>Добрый день! S>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?
Ну и наконец, если надо остановить выполнение кода, а не прервать его, то можно использовать
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, slavenin137, Вы писали:
S>>Добрый день! S>>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?
N>Еще есть способы:
N>1) N>
N>System.Environment.Exit(0);
N>
N>но при этом будут выполняться финализаторы (но не finally блоки)
N>2) N>
N>выгружает целиком домен приложения, прерывая все потоки в нем, но не может использоваться в основном домене.
nikov, описанные вами методы полностью закрывают программу, а как сделать так чтобы форма оставалась на экране — но код не выполнялся — а начинал выполняться только при нажатии button
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, slavenin137, Вы писали:
S>>Добрый день! S>>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?
N>Ну и наконец, если надо остановить выполнение кода, а не прервать его, то можно использовать
N>
N>System.Threading.Thread.Sleep(-1);
N>
при использовании данного способа программа виснет наглухо..
посоветуйте ещё что нибудь.. пока что ни что не подходит...
Здравствуйте, slavenin137, Вы писали:
S>nikov, описанные вами методы полностью закрывают программу, а как сделать так чтобы форма оставалась на экране — но код не выполнялся — а начинал выполняться только при нажатии button
Может быть, тогда лучше поместить этот код в обработчик события кнопки?
Здравствуйте, slavenin137, Вы писали:
S>при использовании данного способа программа виснет наглухо.. S>посоветуйте ещё что нибудь.. пока что ни что не подходит...
Если нужно управлять взаимодействием нескольких потоков (один поток ждет, пока другой сделает что-нибудь), то нужно смотреть классы:
System.Threading.Monitor
System.Threading.ReaderWriterLock
System.Threading.ReaderWriterLockSlim // в сборке System.Core.dll
System.Threading.WaitHandle
System.Threading.ManualResetEvent
System.Threading.AutoResetEvent
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, slavenin137, Вы писали:
S>>nikov, описанные вами методы полностью закрывают программу, а как сделать так чтобы форма оставалась на экране — но код не выполнялся — а начинал выполняться только при нажатии button
N>Может быть, тогда лучше поместить этот код в обработчик события кнопки?
нет, так не надо...
запустил форму — в ней происходит выполнения кода после нажатия кнопки. при определенных обстоятельствах выскакивает вторая форма с двумя кнопками ок и отмена. если нажал ок — то все пошло дальше — если нажал отмена — то главная форма остается открытой и бездействует, а вспомогательная формочка закрывается.
Здравствуйте, slavenin137, Вы писали:
S>Здравствуйте, nikov, Вы писали:
N>>Здравствуйте, slavenin137, Вы писали:
S>>>nikov, описанные вами методы полностью закрывают программу, а как сделать так чтобы форма оставалась на экране — но код не выполнялся — а начинал выполняться только при нажатии button
N>>Может быть, тогда лучше поместить этот код в обработчик события кнопки? S>нет, так не надо... S>запустил форму — в ней происходит выполнения кода после нажатия кнопки. при определенных обстоятельствах выскакивает вторая форма с двумя кнопками ок и отмена. если нажал ок — то все пошло дальше — если нажал отмена — то главная форма остается открытой и бездействует, а вспомогательная формочка закрывается.
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, slavenin137, Вы писали:
S>>nikov, описанные вами методы полностью закрывают программу, а как сделать так чтобы форма оставалась на экране — но код не выполнялся — а начинал выполняться только при нажатии button
N>Может быть, тогда лучше поместить этот код в обработчик события кнопки?
сдается мне, что человек под выполнением кода понимает нечто другое.
Здравствуйте, Константин Л., Вы писали:
КЛ>Здравствуйте, slavenin137, Вы писали:
S>>Здравствуйте, nikov, Вы писали:
N>>>Здравствуйте, slavenin137, Вы писали:
S>>>>nikov, описанные вами методы полностью закрывают программу, а как сделать так чтобы форма оставалась на экране — но код не выполнялся — а начинал выполняться только при нажатии button
N>>>Может быть, тогда лучше поместить этот код в обработчик события кнопки? S>>нет, так не надо... S>>запустил форму — в ней происходит выполнения кода после нажатия кнопки. при определенных обстоятельствах выскакивает вторая форма с двумя кнопками ок и отмена. если нажал ок — то все пошло дальше — если нажал отмена — то главная форма остается открытой и бездействует, а вспомогательная формочка закрывается.
КЛ>сделать второй форме ShowModal? давай конкретнее
я пытаюсь максимально подробно описать — извините если пудрю мозги))
дело в том что вспомогательная форма вызывается в цикле из главной формы — так как сделать так что бы при:
if (имя_формы.DialogResult == DialogResult.Cancel)
{
// остановить код!!!!! срочно!!!
}
такого метода — ShowModal я не нашел в с#...
Здравствуйте, slavenin137, Вы писали:
S>я пытаюсь максимально подробно описать — извините если пудрю мозги)) S>дело в том что вспомогательная форма вызывается в цикле из главной формы — так как сделать так что бы при: S>if (имя_формы.DialogResult == DialogResult.Cancel) S>{ S> // остановить код!!!!! срочно!!! S>} S>такого метода — ShowModal я не нашел в с#...
Здравствуйте, samius, Вы писали:
S>Здравствуйте, slavenin137, Вы писали:
S>>я пытаюсь максимально подробно описать — извините если пудрю мозги)) S>>дело в том что вспомогательная форма вызывается в цикле из главной формы — так как сделать так что бы при: S>>if (имя_формы.DialogResult == DialogResult.Cancel) S>>{ S>> // остановить код!!!!! срочно!!! S>>} S>>такого метода — ShowModal я не нашел в с#...
S>Выйти из цикла чтоли? S>break!
мужики))) я конечно начинающий пользователь — но не до такой же степени)))
как сделать так чтобы форма бездействовала после нажатия отметы?
чтобы просто остановила все процессы — но не закрывалась при этом.
Здравствуйте, slavenin137, Вы писали:
S>if (имя_формы.DialogResult == DialogResult.Cancel) S>{ S> // остановить код!!!!! срочно!!! S>}
Можно все таки более пространно о том, что значит "останосить код!!!"?
Какой код надо остановить?
На сколько его надо остановить?
Остановить(приостановить) или прервать(завершить)?
Код находится в текущем потоке или в другом?
Здравствуйте, slavenin137, Вы писали:
S>Добрый день! S>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось? S>т.е.
А если подробнее, какая именно задача?
полностью остановить весь C# код никто не даст — слишком многое на него уже завязано.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, slavenin137, Вы писали:
S>мужики))) я конечно начинающий пользователь — но не до такой же степени))) S>как сделать так чтобы форма бездействовала после нажатия отметы?
ты хочешь сказать, что у тебя форма _сама_по_себе_ что-то делает после нажатия отмены?
S>чтобы просто остановила все процессы — но не закрывалась при этом.
Здравствуйте, slavenin137, Вы писали:
S>>>запустил форму — в ней происходит выполнения кода после нажатия кнопки. при определенных обстоятельствах выскакивает вторая форма с двумя кнопками ок и отмена. если нажал ок — то все пошло дальше — если нажал отмена — то главная форма остается открытой и бездействует, а вспомогательная формочка закрывается.
S>я пытаюсь максимально подробно описать — извините если пудрю мозги)) S>дело в том что вспомогательная форма вызывается в цикле из главной формы — так как сделать так что бы при: S>if (имя_формы.DialogResult == DialogResult.Cancel) S>{ S> // остановить код!!!!! срочно!!! S>} S>такого метода — ShowModal я не нашел в с#...
Судя по постановке вопроса, вы не в курсе того что такое message loop.
В вашем коде достаточно поставить return и ваша форма будет "бездействовать". Т.е. она не будет выполнять никакого кода, написанного вами, и в тоже время не будет "виснуть намертво".
if (имя_формы.DialogResult == DialogResult.Cancel)
{
// остановить код!!!!! срочно!!!return;
}