Grasshopper

algorithmic modeling for Rhino

Hey all,

  I want to be able to cancel one of my time consuming scripts by hitting Esc. 

I know its possible in a visual studio environment by using a background worker (which I have not tried) but if anyone has advice that is simpler I would really like a way to stop my super heavy components without crashing Rhino & Grasshopper

Thanks!

Views: 766

Replies to This Discussion

Hi Andy,

So you should definitely use a Background worker or Asynchrone/Parallel Threading(depends on what you're doing).

You can then use an eventhandler to check for esc key like this:

private void Form_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Escape) {
       bw.CancelAsync();
 }
}


If you're not using these Threading techniques Rhino & GH will freeze until your algorithm finishes calculating. The effort of Parallel Threading is, you can use multiple CPU's instead of just one (like GH).

Hope this gives you some ideas

FF

Hi Andy,

you can have a look at a basic implementation of the BackgroundWorker here (see at the bottom). The code attached is implemented in a C# component, but you can easily use the same pattern within a compiled component. As Florian suggested you can make the worker cancellable by setting the property WorkerSupportsCancellation to true, like so:

worker.WorkerSupportsCancellation = true;

and then providing the proper event handler.

Cheers,

r

GH_Document.IsEscapeKeyDown()

this is a static method that you can call. If the method returns True, then abort your script and call GH_Document.RequestAbortSolution()

--

David Rutten

david@mcneel.com

Tirol, Austria

RSS

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service