QueryInterface() method, 1154–1155
question mark (?)
for disabling Group object with regular expressions (?:), 243
in null coalescing operator (??), 139–140
in ternary operator (?:), 136–137
Queue class, 256–257
Queue<T> generic class, 283–286
QueueUserWorkItem() method (ThreadPool class), 366
QuickArray example, 221–222
quote server application. See also specific classes and assemblies
adding event logging, 1306–1308
handler methods, 1286
installation program, 1287–1292
overview, 1275–1276
project wizard for, 1281–1283
properties, 1282–1283
QuoteClient assembly, 1275, 1276, 1279–1281
QuoteServer class, 1275, 1276–1279
QuoteService assembly, 1275, 1276, 1281–1287
service start, 1285
ServiceBase class, 1283–1284
starting manually, 1292
TestQuoteServer console application, 1279
QuoteServer class
AcceptSocket() method, 1278
adding event logging, 1306–1308
constructor, 1277
creating, 1276–1279
GetRandomQuoteOfTheDay() method, 1277
ListenerThread() thread function, 1278
overview, 1275, 1276
ReadQuotes() method, 1277
RefreshQuotes() method, 1279
Resume() method, 1278–1279
Start() method, 1277–1278
Stop() method, 1278
Suspend() method, 1278–1279
QuoteService assembly
handler methods, 1286
Main() method, 1284–1285
OnContinue() method, 1286
OnCustomCommand() method, 1286
OnPause() method, 1286
OnShutdown() method, 1286
OnStart() method, 1285, 1287
OnStop() method, 1286
project wizard for, 1281–1283
service start, 1285
ServiceBase class, 1283–1284