(изменено: Павел Кикин, 29 апреля 2013г. 10:36:28)

Тема: Как отловить окончание процесаса/ загрузки?

Здравствуйте. Возникла проблема при выполнении двух функции по нажатии на одну кнопку. Приведу концептуальный пример.

F1()
{
Открыть чертёж с заданным именем.
}

F2()
{
Закрыть текущий чертёж
}

По нажатию на кнопку:
Exe()
{
F1()
F2()
}

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

(изменено: Hwd, 30 апреля 2013г. 10:33:37)

Re: Как отловить окончание процесаса/ загрузки?

Павел Кикин пишет:

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

Process.WaitForExit

P.S. что-то мне подсказывает, что автор под "процессом" подразумевает вовсе не процесс, но скорее поток выполнения (а это совсем другая сказка). Однако раз спросил про "процесс", то про процесс и отвечаю.

(изменено: Павел Кикин, 7 мая 2013г. 13:10:26)

Re: Как отловить окончание процесаса/ загрузки?

Hwd пишет:

Process.WaitForExit

P.S. что-то мне подсказывает, что автор под "процессом" подразумевает вовсе не процесс, но скорее поток выполнения (а это совсем другая сказка). Однако раз спросил про "процесс", то про процесс и отвечаю.

Вы дали ссылку на ожидание завершения какого-то системного процесса. А мне нужно отловить завершение работы функции автокада, например дождаться пока он откроет новый чертеж, чтобы только после этого он начал выполнять последующие операции в коде..

Возможно, это невозможно:)... что очень усложняет задачу. Придется пользователю по несколько кнопок кликать для выполнения цепочки событий.

Re: Как отловить окончание процесаса/ загрузки?

Павел Кикин пишет:

А мне нужно отловить завершение работы функции автокада

Так называть вещи нужно своими именами, а не использовать какие-то слова, не понимая до конца их смысла. Вопрос был о процессе, а завершение работы функции - это не завершение работы процесса.

Вообще, поскольку код не разбит на потоки, выполнение F2() и так начнётся только по выходу из F1().

Re: Как отловить окончание процесаса/ загрузки?

Hwd пишет:

Так называть вещи нужно своими именами, а не использовать какие-то слова, не понимая до конца их смысла. Вопрос был о процессе, а завершение работы функции - это не завершение работы процесса.

Вообще, поскольку код не разбит на потоки, выполнение F2() и так начнётся только по выходу из F1().

Не начнется. Он сначала запустит команду открытия чертежа. А потом не дожидаясь пока он откроется пошлет автокаду команду на закрытие - практически моментально. Естественно автокад еще не успеет открыть новый чертеж и поэтому не выполнит команду закрытия. Открытие и закрытие это элементарный пример - случаев где будет происходить такой затык уйма.

Re: Как отловить окончание процесаса/ загрузки?

@Павел Кикин
Код свой показывай, дабы разговор был предметным.

(изменено: bargool, 8 мая 2013г. 16:41:54)

Re: Как отловить окончание процесаса/ загрузки?

Открытие/закрытие чертежа делаем через SendStringToExecute? Зачем?