Just when you'd thought you're learned everything there was to know about foreach in part 1, I've got more in part 2! This part (the final : ) discusses implementing support for foreach in your own custom types as well as how to patch holes in the framework where they forgot to add foreach support. Enjoy.
Ian Griffiths and Chris Sells
"Unresponsive programs are extremely frustrating to use. Applications that sometimes freeze for a moment are a source of much irritation, especially if they don't provide any feedback on what they are doing, or how long it is likely to be before they start responding again. This behaviour can be particularly common among applications that use remote facilities such as Web services. This article describes how to maintain responsiveness in .NET Windows Forms rich client applications, even when invoking potentially long-running Web services, by using multiple threads."
Shawn Wildermuth and Chris Sells
"In the .NET Framework, rich clients can bring database servers to their knees, just like Web-based applications. But with the disconnected nature of ADO.NET, your rich clients can manipulate and analyze database data without impacting the database server. Once you have the data in the rich client, you can do high-performance analysis of the data—including sorting, filtering, and querying—without expensive server calls. In this article we will show you how to use DataSet, DataView, and XmlDataDocument to make your rich clients work with database data in a disconnected way."
"[O]ne thing doesn't make users happy—not having full control of any processing that their applications are performing. Even though the UI is responsive while pi is being calculated, the user would still like the option to cancel the calculation if they've decided they need 1,000,001 digits and they mistakenly asked for only 1,000,000."
In this article, I add canceling to my asynchronous pi calculating WinForms app.
Bamboo.Prevalence is a "prevalence engine" for .NET. If you don't know what that means (I didn't), you can check out [1], which gives a good intro and then provides a FAQ for the skeptical. In a nutshell:
"For many systems it is already feasible to keep all business objects in RAM. ... To avoid losing data, every night your system server saves a snapshot of all business objects to a file using plain object serialization."
I admit to still being skeptical after reading the FAQ, but it's mostly a "this feels wrong, I'll think of a reason later" kind of a skepticism. : )
[1] http://www.prevayler.org/wiki.jsp?topic=ObjectPrevalenceSkepticalFAQ
"We like .NET Remoting and its extensibility model. We want to show the world that you can do some pretty useful (and some weird) things with this model. We also like the ideas behind SOAP and web services but somehow believe that .NET Remoting is a superset of them and offers features which are needed by today's developers."
This open source site for .NET remoting extensions continues to grow with a new bi-directional TCP channel to work in firewall environments.
"Have you ever wondered what was *really* stored in the view state of your .aspx pages? Well, now you can find out with the free view state decoder utility [1]. Just type in the URL of the page whose view state you would like to decode, and view the contents of the view state through a tree-view, as raw text, or as parsed XML. You can also copy and paste the view state string by hand to decode it. For a screenshot of this utility in action, check out: http://staff.develop.com/onion/images/decoderscreenshot.gif"
I've used this and loved it. It works a treat!