using GLib; public class test: Object { public SourceFunc ext_callback; public async int test_function() { this.ext_callback = test_function.callback; GLib.stdout.printf("Entering async function\n"); #if DO_YIELD GLib.stdout.printf("Doing Yield\n"); yield; GLib.stdout.printf("Continuing after Yield\n"); #endif GLib.stdout.printf("Exiting async function\n"); return 1; } public void run_test() { GLib.stdout.printf("Starting code\n"); test_function.begin( (obj,res) => { var val=test_function.end(res); GLib.stdout.printf("End callback called %d\n",val); }); GLib.stdout.printf("Continuing main function\n"); #if DO_YIELD GLib.stdout.printf("Calling test_function.callback\n"); ext_callback(); GLib.stdout.printf("Returned from test_function.callback\n"); #endif } } int main(string[] argv) { var tst=new test(); tst.run_test(); return 0; }