class Test.Async : GLib.Object { public async string say(string sentence) { GLib.Idle.add(this.say.callback); // Useful in background threads yield; // (yield called in the parent(main) thread). return sentence; } public static int main(string[] args) { Test.Async myasync = new Test.Async(); GLib.MainLoop mainloop = new GLib.MainLoop(); myasync.say.begin("helloworld", (obj, res) => { string sentence = myasync.say.end(res); print("%s\n", sentence); mainloop.quit(); }); mainloop.run(); return 0; } }