Search
Tuesday, January 21, 2020 ..:: Blendblog.net ::.. Register  Login
 Bloggers Minimize

  
 Sponsors Minimize

 Print   
 Users Online Minimize
Membership Membership:
Latest New User Latest: JanaSimpson
New Today New Today: 0
New Yesterday New Yesterday: 0
User Count Overall: 8289

People Online People Online:
Visitors Visitors: 9
Members Members: 0
Total Total: 9

Online Now Online Now:

  
 Welcome to blendblog.net! Minimize

If you are a developer or designer who is creating cutting edge user interface experiences using Microsoft Expression Blend you've just found a great resource!  The purpose of this site is to share our experience with this brand new product.  As with any new piece of software there is a ton to discover.  Bugs will be revealed and workarounds discovered, hopefully this can be a resource to share in the discovery process!

While this site will focus largely on Expression Blend, it will also encompass WPF, Visual Studio, Silverlight, and other .net 3.5 technologies as they relate to the creation of great software.

Please login using your Microsoft LiveID or register a new account.  Doing so will let you comment on any of the blog entries on the site.  We look forward to helping you in your endeavors as well as you helping others in theirs!  We'd love to have more bloggers on our site...if you are interested please register and contact us!

Follow us:


  
 Anoymous Delegate Methods with local variables in VB Minimize
Location: BlogsSean Cullinan    
Posted by: Sean Cullinan 8/26/2008 8:49 PM

I'm going to start this post off with a small rant on two things.  First its the lack of sample code in VB for those of us working with .net 3.5 technologies.  Seriously, it sucks.  I appreciate those who put up code samples and of course they are going to do so in the language of their choice, but when its MSFT and their employees not giving us VB code it is frustrating.

Second, I think MSFT needs to keep C# and VB compatible which they are mostly, but not completely.  When converting code I run into a few problematic spots.  One is with anonomous delegates.  Personally I think that reading and following code with anonymous delegates is atrocious.  It just doesn't seem to make sense to me how code can be executing asynchronously in the middle of a function without tha function being active.  I just don't like it.  However, it does allow a scenario that is useful: you can utilize local variables in your inline anonymous delegate and all the state is maintained.   There is no way to do this intrinsicly in VB.

Here is an example in C# (psuedo C# because I'm winging it):

private void Main() {
   mySub(1, btn1);
   mySub(2, btn2);
   mySub(3, btn3);
}

private void mySub (int i, button button1) {
    button1.click +=
      delegate(object sender, EventArgs e)
      {
        myRoutine(i);
      }
}

private void myRoutine(int i){
   messagebox(i);
}

The interesting thing is that when btn1 is clicked then 1 will display in the messagebox, when btn2 is clicked 2 will display in the messagebox and when btn3 is clicked 3 will display in the messagebox.  IOW the state of the object i is maintained when the anonymous delegate is run for that particular instance of mySub.

How can one convert this to VB which doesn't support anonymous delegates?  At first glance you may just make a module level variable to store the value of i, add an event handler using addhandler button1.click, addressof myRoutine, then make myRoutine use that module level declaration.  That will not work, in the example above you would get the value "3" returned for all 3 of the buttons because th last call to mySub would set that module level variable.

Fortunately the solution is very simple, just use a private class that contains the state of any variables you want to maintain along with the function for the event handler.  Here we go in VB:

private sub main()
    mySub(1, btn1)
   mySub(2, btn2)
   mySub(3, btn3)
end sub

private class btnState
   public i as integer
    public sub click(sender as object, e as system.eventargs)
      msgbox(i)
    end sub
end class

private sub mySub(i as integer, button1 as button)
    dim objState as new btnState
    objState.i = i
  addhandler button1.click, addressof myObj.Click
end sub

The object now contains the state of i as needed and also contains the delegated subroutine that will be called whenever a button is clicked.  Since each instance contains its own version of "i" you get the same results as you would from the C# code above!

To finish my rant, I really wish that they would add the missing pieces of VB that C# has so that code conversions would be easier to do.  If not, PLEASE GIVE US MORE VB SAMPLES!

Hope this is helpful!

Sean

 

 

Permalink |  Trackback

Comments (2)   Add Comment
http://www.coachoutletstore-inc.com/    By coach outlet store online on 5/2/2014 2:59 AM
your wedding <a href="http://www.truereligionbrandjeans.us.com/" title="true religion outlet">true religion outlet</a>'t just one of the <a href="http://www.coachfactoryoutlethandbag.com/" title="www.coachfactory.com/store">coach factory outlet</a> days of your <a href="http://www.louisvuittonbags.us.com/" title="Louis Vuitton bags">louis vuitton handbags</a> - it's also one of <a href="http://www.coachoutletstore.us.com/" title="coach outlet">coach outlet</a> longest. The <a href="http://www.coachoutletstoreofficial.com/" title="coach outlet">coach outlet store online</a> shoe is essential for getting <a href="http://www.isabelmarantshoes.us.com/" title="isabel marant">isabel marant shoes</a> hours of <a href="http://www.coachfactoryoutlet-store.com/" title="www.coachfactory.com/store">coach factory outlet</a> Save up to 50% off <a href="http://www.timberlandshoes.us.com/" title="timberland">timberland shoes</a> entire <a href="http://www.coachfactoryoutlete2014.com/" title="coach factory">coach factory outlet</a> site when you <a href="http://www.coachfactory.us.com/" title="www.coachfactory.com/store">coach factory</a> up for the <a href="http://www.coachoutletstoreco.com/" title="coach outlet">coach outlet</a> email list membership. (expires January 11, 2022) Enjoy <a href="http://www.coachfactoryoutletspurses.com/" title="coach factory">coach factory outlet</a> on your <a href="http://www.michaelkors-co.com/" title="michael kors">michael kors</a> of $150 or more.<a href="http://www.louisvuittonpurses.us.com/" title="louis uitton">louis vuitton purses</a> up to 60% off <a href="http://www.coachfactoryonlineco.com/" title="coach factory">coach factory outlet</a> handbags when you <a href="http://www.michaelkorsoutletsmk.com/" title="michael kors outlet">michael kors outlet online</a> prices on over 3,000 <a href="http://www.coachoutletstore-inc.com/" title="coach outlet store online">coach outlet store online</a>. Hoochie mama! <a href="http://www.marcbymarcjacobsoutlet.co.uk/" title="marc by marc jacobs">marc by marc jacobs outlet</a> doing so <a href="http://www.pradaoutlet-co.com/" title="prada outlet">prada outlet</a> of ultra skin-tight <a href="http://www.pradaoutlet.cc/" title="prada outlet">prada outlet</a> like they're <a href="http://www.coachfactoryoutletonlineinc.com/" title="www.coachfactory.com/store">coach factory outlet online</a> to be <a href="http://www.truereligionjeans2014.com/" title="true religion">true religion jeans</a> apart. <a href="http://www.giuseppezanottisneakers.co.uk/" title="giuseppe zanotti">giuseppe zanotti sneakers</a> shoe sale, <a href="http://www.timberlandboots.us.com/" title="timberland">timberland boots</a> sandals, flats, high heels <a href="http://www.michaelkorspurses.us.com/" title="michaelkors">michael kors purses</a> at up to 50% off <a href="http://www.coachfactoryoutletonlineco.com/" title="coach factory outlet">coach factory outlet online</a> shipping on $150. I <a href="http://www.michaelkorsoutlet-co.com/" title="michael kors outlet">michael kors outlet</a> some new patio <a href="http://www.cheapjerseysco.com/" title="cheap jerseys">cheap jerseys</a> and planted an <a href="http://www.tomsshoescompany.com/" title="toms shoes">toms shoes</a> and I'm <a href="http://www.michaelkorsoutletonlineco.com/" title="michael kors outlet">michael kors outlet online</a> it so much. yes <a href="http://www.coachfactoryoutletstoreco.com/" title="www.coachfactory.com/store">coach factory outlet</a> is required. John Tulin, chief executive of Randa Accessories' <a href="http://www.louisvuittonoutletonline2014.com/" title="louis uitton outlet online">louis uitton outlet</a> division, will retire on May 16. Tulin, who <a href="http://www.marcjacobs.us.com/" title="marc by marc jacobs">marc jacobs</a> in 1971, has been its CEO <a href="http://www.truereligionjeans.us.com/" title="true religion jeans">true religion jeans</a> 1995. <a href="http://www.fitflopusaonline.com/" title="fitflop shoes">fitflop shoes</a> is an amazing <a href="http://www.coachoutletonline-handbags.com/" title="Coach Outlet Online">coach outlet online</a> that was <a href="http://www.celineoutlet-online.com/" title="celine outlet">celine outlet</a> clean <a href="http://www.supra.us.com/" title="supra">supra shoes</a> in Africa.<a href="http://www.ralphlauren.us.com/" title="ralph lauren">Polo ralph lauren</a> and <a href="http://www.celinebags-outlet.com/" title="celine handbags">celine handbags</a> a very happy, peaceful and <a href="http://www.alexanderwang-bags.com/" title="alexander wang">alexander wang handbags</a> Year 2014. May the cares of 2013 be put behind you and <a href="http://www.fitflopsandalssale.com/" title="fitflop sandals">fitflop sandals</a> of new <a href="http://www.sacsburberry.com/" title="sac burberry">sac burberry</a> and <a href="http://www.tomsusashoes.com/" title="toms shoes">toms usa</a> in 2014! <a href="http://www.giuseppezanotti.us.com/" title="giuseppe zanotti">giuseppe zanotti</a> color or texture, each <a href="http://www.alexanderwang-shoes.com/" title="alexander wang">alexander wang shoes</a> its own unique appeal. What <a href="http://www.tiffanysjewelry-co.com/" title="tiffany and co jewelery">tiffany jewelry</a> eye with the <a href="http://www.michaelkorsoutletstoresco.com/" title="michael kors">michael kors outlet</a> Bag though was <a href="http://www.tiffanyandcoinc.com/" title="tiffany & co">tiffany and co</a> US the texture!

Re: Anoymous Delegate Methods with local variables in VB    By sfdgssfgbs on 7/25/2014 10:00 PM
<H1><a href="www.baidu.com" title="retro 6 jordans"><strong>retro 6 jordans</strong></a></H1><br><a href="www.baidu.com" title="michael kors sales"><strong>michael kors sales</strong></a><br><H1><a href="www.baidu.com"><strong>oakley sunglasses usa</strong></a></H1><br><a href="www.baidu.com"><strong>michael kors jewelry on sale</strong></a><br>[url=www.baidu.com][b]michael kors tortoise watch[/b][/url]<br>www.baidu.com coach outlet bags<br>


Your name:
Title:
Comment:
Add Comment   Cancel 

  
 Search Minimize

  
 Archive Minimize

  
 Blendblog Survey Minimize
Our next client application will be written using:




Which Tablet Do you expect to buy?





Submit Survey  View Results

 Print   
Copyright 2011 by blendblog.net   Terms Of Use  Privacy Statement
DotNetNuke® is copyright 2002-2020 by DotNetNuke Corporation