/// <summary> /// This is a javascript application. /// </summary> /// <param name="page">HTML document rendered by the web server which can now be enhanced.</param> public Application(IApp page) { // https://sites.google.com/a/jsc-solutions.net/backlog/knowledge-base/2014/201406/20140628 // X:\jsc.svn\examples\java\ParallelForEachExperiment\ParallelForEachExperiment\ApplicationControl.cs var t = new Thread( new ParameterizedThreadStart( o => { // we have a local copy of the object. var oo = o as XData; // all member access methods should be non blocking // if they need to span across thread boundaries Console.WriteLine("working on the other thread"); // update local, then update parent memory oo.goo += ", from thread " + new { Thread.CurrentThread.ManagedThreadId }; // or should the fields be transferable dictionary? // we could just send the data part back now } ) ); var ooo = new XData { goo = "goo1 " + new { Thread.CurrentThread.ManagedThreadId } }; t.Start( // we are sending in data/objects ooo ); t.JoinAsync( delegate { // 0:18ms working on the other thread //0:122ms { goo = from thread } //Console.WriteLine(new { ooo.goo }); // { goo = goo1 { ManagedThreadId = 1 }, from thread { ManagedThreadId = 1 } } new IHTMLPre { new { ooo.goo } }.AttachToDocument(); } ); }