Как я могу интегрировать код в основной цикл GTK?

У меня есть рабочий код без графического интерфейса, который управляет некоторыми потоками. Теперь я хочу интегрировать его с GUI, созданным в GTK. Он строит графический интерфейс с test_glade который использует gtk::main:

fn main() {

    //..
    test_glade();
    //..

    // Question about this
    while estado < 4 {

        if *count.lock().unwrap() == arc_pref.cantidad {
            estado = 3;     
        }else if estado == 2{
            estado = 1;
        }else if estado == 1{
            estado = 2;
        }else if *count.lock().unwrap() == 0 && estado == 3{
            estado = 1;
        }
        //..

        estados(count.clone(), arc_pref.clone(), estado).join();
    }

}

fn test_glade(){

    gtk::init();  
    //..
    window.show_all();  
    gtk::main();//main loop gtk
}
//..

Посмотрев, я вижу, что это основной цикл, поэтому мой код не запускается.

//..
test_glade();
//..

// Question about this
while estado < 4 {
    //..
    estados(count.clone(), arc_pref.clone(), estado).join();
}

Как я могу интегрировать мой код, который использует некоторые потоки, в основной цикл GTK?

На данный момент я создал новый поток, и я поместил код внутри потока, и он, кажется, работает:

fn test_glade(){

    gtk::init();  
    //..
    thread::spawn(move|| {
        //code Question

    });
    //..
    window.show_all();  
    gtk::main();//main loop gtk
}
//..

0 ответов

Другие вопросы по тегам