X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.runtime%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fruntime%2Futils%2FAsyncUtils.java;h=29886f21ee960e916f6078d581f4d2032f142414;hp=fcd8a47240d59ddd30d9052f8decb87530bda8aa;hb=309b4b814a1375c2e2bd67bdee77d62bc9abf073;hpb=3edbf85ff8a7f1bd596857a24b1bdebd66943d6b diff --git a/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/utils/AsyncUtils.java b/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/utils/AsyncUtils.java index fcd8a4724..29886f21e 100644 --- a/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/utils/AsyncUtils.java +++ b/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/utils/AsyncUtils.java @@ -1,18 +1,26 @@ package org.simantics.scl.runtime.utils; +import java.io.PrintWriter; +import java.io.StringWriter; + import org.simantics.scl.runtime.SCLContext; import org.simantics.scl.runtime.function.Function; +import org.simantics.scl.runtime.reporting.SCLReporting; import org.simantics.scl.runtime.tuple.Tuple0; public class AsyncUtils { public static void runAsync(Function f) { - SCLContext context = SCLContext.getCurrent(); + SCLContext context = SCLContext.createDerivedContext(); new Thread() { @Override public void run() { SCLContext.push(context); try { f.apply(Tuple0.INSTANCE); + } catch(Exception e) { + StringWriter sw = new StringWriter(); + e.printStackTrace(new PrintWriter(sw)); + SCLReporting.printError(sw.toString()); } finally { SCLContext.pop(); }