/// <summary> /// Dispatches a JavaScript function to the main thread /// </summary> /// <param name="ptr">The function pointer</param> /// <param name="args">The arguments to pass to the function</param> /// <param name="deleteAfterExec">Whether or not this pointer should be deleted after the function has been called</param> public void DispatchFunction(JSFunctionPtr ptr,bool deleteAfterExec, params object[] args) { JSMarshaller marshal = new JSMarshaller(); marshal.args = args; marshal.DeleteAfterExecution = deleteAfterExec; marshal.ptr = ptr; interruptfunctions.Add(marshal); mvent.Set(); }
IntPtr setInterval(int count, IntPtr args) { object[] data = vm.Deserialize(count, args); JSFunctionPtr ptr = data[0] as JSFunctionPtr; if (!eventthreadrunning) { eventthreadrunning = true; System.Threading.Thread mthread = new Thread(eventthread); mthread.Start(); } JSEvent tt = new JSEvent(); JSMarshaller marshal = new JSMarshaller(); marshal.args = new object[0]; marshal.DeleteAfterExecution = false; marshal.ptr = ptr; tt.marshaller = marshal; tt.timeout = (int)data[1]; tt.repeating = true; events.Add(tt); eventTimer.Set(); intervals.Add(ivalid, ptr); ivalid++; return vm.Serialize(this, ivalid-1); }
void firetarget(object sender) { mpass mp = sender as mpass; System.Threading.Thread.Sleep(mp.timeout); JSMarshaller marshal = new JSMarshaller(); marshal.ptr = mp.function; marshal.args = new object[0]; interruptfunctions.Add(marshal); mvent.Set(); }