algorithmic modeling for Rhino
Hi all,
Im trying to hack my way through a c# plugin (compiled, not a c# script).
That I'd like to do is to do some processing without blocking grasshopper and when done, update the output variable.
If I put that function on a new thread I couldnt find a way to update the component later correctly.
What is the bast and probably simple way to run just one function that updates a variable (or it can return one, but I thought that a global one is a bit better) in the background without blocking?
Thanks
T
private static String results = String.Empty;
private static Boolean tDone = false;
protected override void SolveInstance(IGH_DataAccess DA)
{
Listspan class="s3">Line> lines = new Listspan class="s3">Line>();
if (!DA.GetDataList(0, lines)) { return; }
// can take a lot of time to finish!!
// this updates the global "results" string
DoSomeHardWork(lines);
DA.SetDataList(0, results);
string bb = Convert.ToString(tDone);
DA.SetData(1, bb);
}
Tags:
Hi,
C++ is not an issue. Its the C# side on GH.
I used the example above and I change one line to call my remote code.
Runs the first time ok, but then if you change/update the input the plugin wont update (re-run)... at some point after a minute or so, it will run again (not sure if its a GUI trigger, or GH data related)
My comment was an answer to "is calling "thread = null" nice in C# without properly killing the thread?"
My comment was about preventing memory leaks, and that dereferencing a thread is probably not a proper way to kill a thread, especially if you use unmanaged memory (.NET Garbage collection will not free memory used by native code properly. So if you kill a thread you have to clean up after yourself, by creating proper dispose methods.).
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by