<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, May 16, 2014 at 11:45 AM, Craig Peterson <span dir="ltr"><<a href="mailto:craig@scootersoftware.com" target="_blank">craig@scootersoftware.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="">2) Our application has multiple independent top-level windows, like a<br>
</div>
web browser.  There is no "MainForm".  Each window can show modal<br>
dialogs that only disable that specific window.<br>
<br>[snip]<br><br></blockquote><div><br></div><div>Ugh, but with anonymous functions replacing <span style="font-family:arial,sans-serif;font-size:13px">ShowMyDialog vs </span><span style="font-family:arial,sans-serif;font-size:13px">ShowMyDialogDone, you're in much worse positions.</span></div>
<div><span style="font-family:arial,sans-serif;font-size:13px">It's likely that you would have to the duplicate code. </span></div><div><span style="font-family:arial,sans-serif;font-size:13px">I'd assume that </span><span style="font-family:arial,sans-serif;font-size:13px">"</span><span style="font-family:arial,sans-serif;font-size:13px">after modal dialog" code is somehow matches to some other code in the system.</span></div>
<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">Model-View-Controller pattern comes into play.</span></div><div><span style="font-family:arial,sans-serif;font-size:13px">The dialog itself is just a way to get a confirmation from a user to do an actions.</span></div>
<div><span style="font-family:arial,sans-serif;font-size:13px">It's likely that the same action could take place without a confirmation from a user. </span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br>
</span></div><div><font face="arial, sans-serif">So, with anonymous functions, you'd need to duplicate the same action code across the system. (Anonymous functions are just for here-and-now usage). </font><span style="font-family:arial,sans-serif">No reason to enumerate the cons of code duplication.</span></div>
<div><br></div><div>----</div><div><br></div><div>No directly related to usage of anonymous functions...</div><div><br></div><div>...and please note, I'm not trying to criticize your work, but give an excuses for my point of view...</div>
<div><br></div><div>Using a threading for GUI control is generally bad idea. Most of standard GUI APIs (OSX, Windows, *nixes) have a note in 90% of their functions - "do not use in multiple threads". Introducing threads to handle GUI is potentially dangerous (due to all threading syncing issues) and an overhead. Most of solutions doesn't really need threads, as well as usage of threads increases resources consumption.</div>
<div><br></div><div>...back to anonymous:</div><div><br></div><div>So making a choice of changing the code to use Fibers, rather than using ShowDialog / DoneDialog was not so good after all.<br></div><div>Right now you're in position to change the code code from Fibers to something more portable... <br>
</div><div>And yet again using ShowDialog / DoneDialog is one of the options. </div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><font face="arial, sans-serif">Another point to use anonymous functions is storing of "State" that could be later use in processing the resulting code.</font></div>
<div><font face="arial, sans-serif">The compiler is doing for you it's good and bad. Good - you don't need to write any extra code, Bad - pretty much anything could go into the "state", even the things you don't need to be there (or do need to be there, but not there at all). </font></div>
<div><span style="font-family:arial,sans-serif">So, I do think that storing the state explicitly is a better option, even though extra lines of code would be required.</span><br></div><div><br></div><div>thanks,<br></div>
<div>Dmitry</div></div></div></div>