خوب ببینید اگر بخواید سرویس ها رو با حلقه ها کنترل کنید به این معنی هستش که شما یک حلقه ی بینهایت دارید ، حالا اگر شما 20 تا سرویس داشته باشید میشه 20 تا حلقه ی بینهاید - یه دونش به اندازه ی کافی پوست سیستم رو میکنه چه برسه به 20 تا .
بعد فرض کنیم که شما به جای 10 دقیقه یک بار هر یک ثانیه یک بار چک کنید اون زمان وقتی که یک عملی رو انجام میدید یک ثانیه تاخیر دارید اگر هم 10 دقیقه باشه که میشه 10 دقیقه تاخیر .
بعضی سرویس هایی که مینویسید به صورت اتومات کار میکنند و اونها چه 5 دقیقه یک بار باشه چه 1 ساعت یک بار فرقی به حالش نمیکنه چون باید در طول یک بازه زمانی یک چیزی رو کنترل کنه و این سرویس ها اونت لس هستند یعنی به رویداد ها کاری ندارند .
ولی سرویس هایی که به رویداد ها پاسخ میدند توسط سیستم عامل هندل میشند ، سیستم عامل چه طوری این کار رو میکنه من خودم هم دقیق نمیدونم چون هیچ وقت سیستم عامل ننوشتم
مثلا وقتی شما دکمه ضربدر رو روی پدتون فشار میدید یک کاری کردید ، اگر قرار باشه که سیستم عامل یا بازی توی یک بازه زمانی و از طریق یک حلقه چک کنه که شما این دکمه رو فشار دادید یا نه اون تاخیر باعث میشه که کاری که میکنید همزمان نباشه و اگر چک کردن و سرعت حلقه از یک حدی بیشتر باشه فرض کنید یک هزارم ثانیه سی پی یو رو میخوابونه - یک حلقه بینهایت با وایل یا دو یا فور بنویسید توی کنتر از 1 دقیقه سیستمتون کرش میکنه .
سی شارپ هم همون طور که خودتون میدونید اول آن چیزی که شما نوشتید رو به یک زبان میانی (MSIL) تبدیل میکنه و بعدش اون زبان میانی توسط CLR تفسیر میشه . برای همین شما هرگز توی سی شارپ مستقیم با سیستم عامل درگیر نیستید و هرگز نمیتونید در لول پایین در سی شارپ برنامه نویسی کنید و در نتیجه نمیتونید از خیلی امکاناتی که در زبان های سطح میانی یا پایین وجود دارد در سی شارپ استفاده کنید ، ولی با این حال یک سیستم خیلی خوب برای هندل کردن رویداد ها داره .
من خودم سی شارپ رو تازه شروع کردم و هنوز در مورد سرویس نوشتنش چیزی نمیدونم ، ولی توی زبانهای دیگه مثل D که در لینوکس خیلی کاربرد داره داستان به کل فرق میکنه .