}
+ public async int run_async()
+ {
+ GLib.MainLoop loop = new GLib.MainLoop ();
+ this.complete.connect( (res, str, stderr) => {
+ loop.quit ();
+ });
+ try {
+ this.run();
+ } catch (GLib.Error e) {
+ return -1;
+ }
+
+
+ loop.run ();
+ return this.result;
+
+
+
+ }
+
+
public void tidyup() // or kill