1
Vote

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

file attachments

comments

cin wrote Mar 29, 2012 at 5:32 AM

Currently jint doesn't support multithreading