Bag with returning System.Threading.Thread to JS
description
I added a function call asynchronous functions of JS.
C# code:
engine.SetFunction("Async", new Func<Jint.Native.JsFunction, Thread>(Async))
public Thread Async(Jint.Native.JsFunction func)
{
Thread thread = new Thread(parallel);
thread.Name = "JInt_Async";
thread.Start(func);
return thread;
}
public void parallel(object func)
{
engine.CallFunction((Jint.Native.JsFunction)func);
}
JS code:
var a = "A";
var b = "B";
var f1 = function() { Wait(100); a = "F1"; };
var f2 = function() { Wait(50); b = "F2"; };
var p1 = Async(f1);
var p2 = Async(f2);
p1.Join();
p2.Join();
Write(a);
Write(b);
Execution is interrupted with exeption
First run: "Function expected. Line: 7 Char: 0 No source code available."
Next run: "Function expected. Line: 10 Char: 0 No source code available."
If you swap the two lines:
var a = "A";
var b = "B";
var f1 = function() { Wait(100); a = "F1"; };
var f2 = function() { Wait(50); b = "F2"; };
var p1 = Async(f1);
var p2 = Async(f2);
p2.Join();
p1.Join();
Write(a);
Write(b);
Programm work correct. (write F1F2).
It is observed only in the release version. When debugging, all right.
Jint v0.9.2
.NET 4 Client Profile