Я разрабатываю проект, написанный на Vala и GTK+, мне нужно реализовать асинхронную функцию, поэтому я задался целью сделать пример теста... и почему-то получаю следующую ошибку:
async.vala:31.3-31.20: ошибка: доступ к асинхронному обратному вызову `asyncProc.callback' не разрешен в этом контексте asyncProc.callback();
код выглядит следующим образом:
using Gtk;
public async void asyncProc ()
{
stdout.printf ("STEEP -- 1 --\n");
yield;//Return to Main after the *1
stdout.printf ("STEEP -- 2 --\n");
}
public static int main (string[] args)
{
Gtk.init (ref args);
var win = new Window ();
win.set_title ("Async Functions Test");
win.set_default_size (512,100);
win.set_border_width (12);
win.destroy.connect (Gtk.main_quit);
var boton = new Button.with_label (" Print in Terminal ");
//public delegate void AsyncReadyCallback (Object? source_object, AsyncResult res) callback_finalizacion;
boton.clicked.connect (()=> {
asyncProc.begin ();
//--> Return of YIELD
stdout.printf ("STEEP -- B --\n");
asyncProc.callback ();
});
win.add (boton);
win.show_all ();
Gtk.main ();
return 0;
}
и компилируется с помощью следующей команды:
valac --pkg gtk+-3.0 --pkg gio-2.0 async.vala
У кого-нибудь есть идеи, потому что это может произойти? Проект, который я разрабатываю, выглядит следующим образом: https://launchpad.net/gcleaner