Если Вы, приложение является приложением Windows GUI затем с помощью кода ниже, чтобы сделать ожидание, не идеальны, поскольку сообщения для приложения не будут получать обработку. Пользователю будет похоже, что Ваше приложение зависло.
WaitForSingleObject(&processInfo.hProcess, INFINITE)
Что-то как непротестированный код ниже мог бы быть лучше, поскольку это будет продолжать обрабатывать очередь сообщений окон, и Ваше приложение останется быстро реагирующим:
//-- wait for the process to finish
while (true)
{
//-- see if the task has terminated
DWORD dwExitCode = WaitForSingleObject(ProcessInfo.hProcess, 0);
if ( (dwExitCode == WAIT_FAILED )
|| (dwExitCode == WAIT_OBJECT_0 )
|| (dwExitCode == WAIT_ABANDONED) )
{
DWORD dwExitCode;
//-- get the process exit code
GetExitCodeProcess(ProcessInfo.hProcess, &dwExitCode);
//-- the task has ended so close the handle
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
//-- save the exit code
lExitCode = dwExitCode;
return;
}
else
{
//-- see if there are any message that need to be processed
while (PeekMessage(&message.msg, 0, 0, 0, PM_NOREMOVE))
{
if (message.msg.message == WM_QUIT)
{
return;
}
//-- process the message queue
if (GetMessage(&message.msg, 0, 0, 0))
{
//-- process the message
TranslateMessage(&pMessage->msg);
DispatchMessage(&pMessage->msg);
}
}
}
}
[myTabBarController setSelectedIndex:index]
РЕДАКТИРОВАТЬ: Отвечая на вопрос части 2 из комментария:
Вы можете определить метод в AppDelegate для переключения на другую вкладку.
И вы можете получить appdelegate откуда угодно и отправить сообщение .. что-то вроде:
MyAppDelegate *appDelegate = (MyAppDelegate*) [[UIApplication sharedApplication] delegate];
[appDelegate SwitchToTab:index]
альтернативно...
[self.parentViewController.tabBarController setSelectedIndex:3];
Я хотел бы ответить Пракашу, но не могу понять, как это сделать. Может быть, меня заблокируют, пока мой счет не повысится.
В любом случае, я надеюсь, что это кому-то поможет:
Я делал то, что сказал Пракаш, и ничего не происходило. Это потому, что для получения указателя на делегата моего приложения я делал следующее:
AppDelegate_Phone *appDelegate = [[AppDelegate_Phone alloc] init];
Когда мне следовало делать это:
AppDelegate_Phone *appDelegate = (AppDelegate_Phone *) [[UIApplication sharedApplication] delegate];
Ошибка новичка.