]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/utils/AsyncUtils.java
(refs #7607) Fixed handling of SCLContext in asynchronous requests
[simantics/platform.git] / bundles / org.simantics.scl.runtime / src / org / simantics / scl / runtime / utils / AsyncUtils.java
index fcd8a47240d59ddd30d9052f8decb87530bda8aa..29886f21ee960e916f6078d581f4d2032f142414 100644 (file)
@@ -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();
                 }