The peanut gallery has long been a source of unsolicited commentary. Once upon a time performers played to it (instead of telling it to hush up). Times change, but one thing remains the same -- the audience in the cheap seats may feel little compunction about keeping their opinions to themselves.
The phrase "peanut gallery" dates back to 1888 in American theaters. The least costly tickets for the show were seats in the back and at the top. Being in the rear didn't keep the less-affluent patrons from being heard -- especially not in the intimate settings of Victorian theater. Oh, and did we mention a snack often eaten in these seats? Yep, peanuts. When this section of the audience didn't like the scene on stage, they would heckle the actors and throw peanuts.
So "peanut gallery" came to mean, not just the cheap seats, but the rowdy, obnoxious folks who couldn't keep their mouths shut during a performance. In earlier days, those on stage tried to appease the peanut gallery so as to avoid the salty missiles. Over time, performers have gotten a bit less accommodating.
In the 1950s, the children's TV show Howdy Doody had its own peanut gallery composed of small children. This usage seems more closely linked to the slang of "peanut" for something or someone small and inconsequential. That's probably another reason they shouldn't comment.
In a class that sometimes needs to pass multiple data structures asynchronously within itself (like Net.Mail.SendAsync()) , it is appropriate that since all of this is in the private scope of the class, to create a quick private class/structure within that lets you pass three different values to the UserState object of the Asynchronous method. This makes sense.
But there I am trying to find a non-external method of creating a zip file. I could use the Shell32 method, creating the quick byte header of a zip file and then linking a Shell32.Folder object to it, and moving the files into that folder uses the Shell32 for XP to "zip" it. Or, to use a .Net method I could use the IO.Packages.ZipPackage found in the WindowsBase.dll.
However, the Shell32 method requires the Interop.Shell32.dll file to be included with my application, which i find annoyingly redundant with regards to COM and it's design, which with any other language framework that utilizes it doesn't require an "interim" dll to interface with the default dll. I can understand using that interim dll for type checking during development, but once the app is compiled it should just link directly to shell32.dll in the system directory.
Additionally the IO.Packages.ZipPackage works great, is completely internal so no additional assemblies need to be included with my application, but on the other side of annoying it adds this [Contenttypes].xml file to every zip it creates which could be confusing to those who end up having to extract the useful files from the Zip file.