У меня есть следующий код, который я пытаюсь запустить, однако wait_for_connection()
, кажется, выполняется перед предыдущими 2 строками, и я не могу понять, почему? Мне действительно нужно запустить две предыдущие строки перед вызовом функции wait_for_connection()
. Даже если я введу sleep(1)
перед вызовом функции wait_for_connection()
, она все равно будет запущена перед предыдущими строками.
Мой код выглядит следующим образом:
void wait_for_connection() {
for (int i = 0; i < 10; i++) {
g_print("Checking server...\n");
if (connected == 1) {
g_print("Connected to: %s", selectedServerStr);
break;
}
sleep(1);
}
}
int connect_server(GtkButton *button, gpointer user_data) {
.......
if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(selectedServer), &model, &iter)) {
path = gtk_tree_model_get_path(model, &iter);
serverIndex = *gtk_tree_path_get_indices(path);
g_print("Selected Server IP: %s\n", serverIPArray[serverIndex][0]);
gtk_widget_set_sensitive(serverList, FALSE); // These 2 lines needs to be run first
append_to_log("Attemping connection, please wait...", 1);
wait_for_connection(); // This is where the error lies, this runs before the above 2 lines
return 1;
} else {
gtk_widget_set_name(serverBox, "fieldsError");
g_print("No server selected: Aborting...\n");
return -1;
}
}
Строка gtk_widget_set_sensitive()
используется для отключения взаимодействия с пользователем в виджете выбора, однако этого не происходит до тех пор, пока функция wait_for_connection()
не завершит печать «Проверка сервера ...» 10 раз. Значение connected
равно 0, поэтому в настоящее время функция просто печатает «Проверка сервера ...» 10 раз.
Кто-нибудь знает, что может происходить? Любая помощь будет принята с благодарностью, спасибо.