c# - create new Thread, passing two parameters -


i'm trying create new thread passing 2 parameters, have searched many times still no result. here method:

public void add(int smallest, int biggest) {   (int = smallest; < biggest+1; i++)   {     thread.sleep(500);     result = result + i;   } } 

and want below:

 static void main()     {       int x=10;       int y=100;       // in line appear error       thread t=new thread(add);       t.start(x,y);     } 

you can't way. thread.start() method doesn't include overloads supporting more 1 parameter.

however, general goal solved using anonymous method thread body:

static void main() {     int x=10;     int y=100;     // in line appear error     thread t=new thread(() => add(x, y));     t.start(); } 

i.e. instead of add() method being thread entry point, wrap in anonymous method (declared here via lambda expression syntax). arguments x , y "captured" anonymous method, passed add() method when thread starts.

one important caution: values variables retrieved when add() method called. when thread starts. if modify values before happens, new values used.

this idiom usable in context want pass strongly-typed and/or multiple arguments method api allow none or fixed number (like one). event handlers, task entry points, i/o callbacks, etc. can benefit approach.


Comments

Popular posts from this blog

c++ - QTextObjectInterface with Qml TextEdit (QQuickTextEdit) -

javascript - angular ng-required radio button not toggling required off in firefox 33, OK in chrome -

xcode - Swift Playground - Files are not readable -